Подключение JSONP с использованием JQuery и WCF - PullRequest
0 голосов
/ 23 сентября 2010

Я пытаюсь заставить кросс-доменный вызов работать с использованием JSONP в JQuery.В IE метод оповещения никогда не выполняется.В FF / Safari / Chrome он всегда равен нулю.Я посмотрел на Fiddler, и результат метода WCF такой, какой я ожидал, а именно:

method({"Name":"blah1","Data":"blah2"});

Вот мой JavaScript:

$.getJSON("http://localhost:5603/MyService/?method=test", null, function (result) {
    alert("in test: " + result);
    $("#spText").html(result);
});

Вот метод WCF:

[OperationContract]
[WebInvoke(UriTemplate = "", Method = "GET", 
    BodyStyle=WebMessageBodyStyle.Bare,
    ResponseFormat = WebMessageFormat.Json)]
public Message Blah()
{
    var j = new { Name = "blah1", Data = "blah2" };

    JavaScriptSerializer s = new JavaScriptSerializer();
    string jsonClient = s.Serialize(j);

    return WebOperationContext.Current.CreateTextResponse("method(" + jsonClient + ");",
        "application/json; charset=utf-8", Encoding.UTF8);
}

Мне кажется, я очень близок к этому.Кто-нибудь может определить, что я делаю не так?

1 Ответ

2 голосов
/ 23 сентября 2010

Попробуйте изменить

http://localhost:5603/MyService/?method=test

на

http://localhost:5603/MyService/?method=test&callback=?

Из документации:

Если URL включает в себя строку "callback=?" в URL,запрос обрабатывается как JSONP

Список литературы: http://api.jquery.com/jQuery.getJSON/

...