JQuery междоменный вызов в службу REST

0

Попытка получить данные из службы REST WCF в другом домене. Вот создание моей службы, которая кажется прекрасной и получает запрос с моим параметром и сигнатурой функции метки времени jQuery.

_Service = new WebServiceHost(myObject);
var binding = new WebHttpBinding() { CrossDomainScriptAccessEnabled = true };
var endpoint = _Service.AddServiceEndpoint(typeof(myObjectContract), binding, "http://localhost:8000/myObject_Service");
            endpoint.Behaviors.Add(new WebHttpBehavior());
            _Service.Open();

Вот вызов jQuery...

$.ajax({
    url: "http://localhost:8000/myObject_Service/GetInterfaceInfo?interfaceId=1&callback=?",
    crossDomain: true,
    dataType: "jsonp",
    success: function (data) {
        alert(JSON.stringify(data));
    }
}).fail(function (data, textStatus, errorThrown) {
    alert(textStatus);
});

Я попытался форматировать данные несколькими способами, чтобы заставить его правильно разбираться, но я либо получаю сообщение об ошибке, что функция обратного вызова "не была вызвана", либо что существует "parsererror". Ниже приведена попытка, возвращающая строку в том формате, который люди предлагали на других сообщениях, но никаких данных никогда не происходит.

jQuery17106912882712204009_1384296559027({"data":"1","data":"2"})

Вот данные, которые отправляются из службы

public string GetInterfaceInfo(int interfaceId, string callback)
{
    return new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(_I);
    //Tried this below, also with no success.
    //return string.Format("{0}({1})", callback, output);
}

Я не получаю никаких данных назад при моем вызове ajax, хотя он работает, хотя, потому что в вызове браузера. Я получаю все эти данные.

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
[{"Id":100,"Status":true,"Direction":"Inbound","Name":"Test_100","Sent":0,"Received":1000,"LastMessage":"2013-11-13 08:50:33.AM","Filtered":0,"CanRestart":true},{"Id":101,"Status":false,"Direction":"Inbound","Name":"Test_101","Sent":0,"Received":1000,"LastMessage":"2013-11-13 08:50:33.AM","Filtered":0,"CanRestart":true},{"Id":102,"Status":true,"Direction":"Inbound","Name":"Test_102","Sent":0,"Received":1000,"LastMessage":"2013-11-13 08:50:33.AM","Filtered":0,"CanRestart":true}]
</string>

Что случилось с моим призывом ajax?

  • 0
    на ваши последние три вопроса, нет, нет и нет. Вы генерируете jQuery17106912882712204009_1384296559027 вручную или это то, что jQuery говорит вашему серверу вернуть. Пока что все выглядит хорошо, кроме crossDomain: true , это не нужно, но не должно crossDomain: true сбой вашего запроса.
  • 0
    Когда вы получаете parseerror, открываете ли вы консоль javascript, чтобы увидеть текст ответа, который не удалось проанализировать?
Показать ещё 3 комментария
Теги:
wcf
webservice-client

1 ответ

0

Похоже, что это была проблема с атрибутом в моем контракте на обслуживание, это должен был быть ResponseFormat = WebMessageFormat.Json, хотя я думал, что JSON должен был быть типом по умолчанию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню