2010-09-22 3 views
0

Я пытаюсь получить вызов перекрестного домена для работы с использованием JSONP в JQuery. В IE метод предупреждения никогда не выполнялся. В FF/Safari/Chrome он всегда равен нулю. Я посмотрел на скрипача и результат от метода WCF как я ожидаю, что:Проводка JSONP с использованием JQuery и 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); 
} 

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

ответ

2

Try изменения

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

в

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

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

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

Литература: http://api.jquery.com/jQuery.getJSON/

+0

Это было. Забавно, как это работает. Я планировал добавить это в соответствии со спецификацией и эффективно закодировал его там («? Method = test» в оригинале), пока я не смог сделать танец, чтобы вытащить этот ключ из URL-адреса на сервере WCF, а затем повторно применить перед отправкой ответа. Оказывается, что это не динамично, это проблема. Спасибо за помощь. –

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