2009-04-08 3 views
2

У меня был предыдущий вопрос can jquery ajax call external webservice?Как вызвать внешний веб-сервис с помощью jquery «jsonp»?


и некоторые хорошие разработчики ответили мне использовать JSONP, но я не знаю, как использовать его, я пытаюсь вызвать мою службу, используя этот код:

$.ajax({ 
      type: "POST", 
      url: "http://localhost:1096/MySite/WebService.asmx?callback=?", 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "jsonp", 
      success: function(msg) {alert(msg);} 
      }); 


и это мой код услуги:

[WebMethod] 
public string HelloWorld() { 
    return "Hello World " ; 
} 


У кого-нибудь есть примеры или я могу объяснить эту проблему для меня?

UPDATE:
Я написал код еще раз, чтобы быть похожим на это:

$.getJSON("http://localhost:1096/YourShoppingTest1/WebService.asmx/HelloWorld?jsonp=?",{name:"test"}, 
    function(data){ 
    alert(data.x); 
    }); 


и службы, как это:

[WebMethod] 
public string HelloWorld(string name) 
{ 
    return "({\"x\":10 , \"y\":100})"; 
} 


Но это всегда дайте мне эту ошибку когда назад: «отсутствует; перед постановкой [Перерыв об этой ошибке] ({ "х": 10, "у": 100})»

и не вызвать функцию успеха, кто может помочь с этим

+0

Почему вы приняли ответ на свой другой вопрос, если это вам не поможет? Вы должны продолжать задавать свой старый вопрос и следовать этой теме. – Seb

+0

, потому что они ответили мне таким образом: $ .getJSON, который работает, но я спрашиваю о другом способе использования $ .ajax –

ответ

2

я? нас было проблемой похож, к сожалению, у меня нет кода под рукой

Из памяти:.

См: What are some good examples of JQuery using JSONP talking to .net? & What is the best way to call a .net webservice using jquery?

0

Вы не можете выдать запрос POST с использованием JSONP, только GET (поскольку <script src="..."> GETs ресурс).

-1

Сначала следует добавить JSONP ('обратного вызова') в вашем веб-сервере, как $ _GET [ 'обратного вызова']

Во-вторых, не забывайте ';' после выходных сценариев

$data = '{"name" : "hello world"}'; 
echo $_GET['jsoncallback'] . '(' . $data . ');'; 

Теперь вы можете узнать, почему возникла проблема с отсутствием перед заявлением.

HTML:

$.getJSON({"http://localhost:1096/MySite/WebService.asmx?callback=?", 
     function(data){alert(data);} 
     }); 
0

код Hezil работал для меня, но я должен был изменить код сервера на это:

$data = '{"name" : "hello world"}'; echo $_GET['callback'] . '(' . $data . ');'; 

Обратите внимание на "обратный вызов" вместо "jsoncallback".

2

Точка с JSONP - это P! P как в дополнении. Вы заполняете литерал объекта JSON вызовом функции - вызывая функцию на вызывающей странице, принимая объект данных в качестве аргумента.

I.e. если вы запрашиваете веб-сервис, отправьте нужное имя функции обратного вызова в строке запроса

...service/?callback=hello 

Затем следует ответить на обслуживание (используя соответствующий тип MIME):

hello({a: 17, b: 4117}); 

Для более подробного описания работы, см.: http://www.stpe.se/2008/10/cross-site-data-retrieval-using-jsonp/

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