2013-11-12 2 views
0

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

_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); 
} 

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

<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', это не нужно, но не должно сделать ваш запрос неудачным. –

+0

Когда вы получаете parseerror, вы открываете свою консоль javascript, чтобы увидеть ответный текст, который не удалось разобрать? –

+0

Это возврат к вашему успеху или сбою? И если проверить запрос через проверку сети через браузер, каков код ответа и ответа? – Daved

ответ

0

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

Смежные вопросы