JQuery, JSONP и безуспешно - PullRequest
1 голос
/ 26 мая 2010

У меня есть следующий jquery в моем коде $j.getJSON("http://localhost:8080/WWTestHarnessWEB/ReadersToolkitFinalController.htm?jsoncallback=?", {'uID': 1}, function(data){alert(data);});

JSON, который я возвращаю, выглядит следующим образом ({"positiveCount":"0","negativeCount":"999"})

Но мое предупреждение никогда не срабатывает.

Есть идеи, что мне нужно сделать, чтобы это работало?

С уважением Дэмиен

Ответы [ 4 ]

2 голосов
/ 26 мая 2010

Я считаю, что если вы используете другое имя для параметра строки запроса обратного вызова, чем callback (похоже, вы используете jsoncallback вместо), вы должны указать jQuery; см. параметр jsonp в объекте параметров при вызове $.ajax. Это означает, что вам придется использовать ajax вместо getJSON, но это достаточно просто.

например:.

$.ajax({
  url:      "http://localhost:8080/WWTestHarnessWEB/ReadersToolkitFinalController.htm?jsoncallback=?",
  dataType: "json",
  jsonp:    "jsoncallback",
  data:     {'uID': 1},
  success:  function(data){alert(data);}
});

Я не уверен, нужно ли вам (или нужно) включать "jsoncallback =?" в URL самостоятельно или дайте jQuery вставить его; быстрый эксперимент должен сказать вам.

1 голос
/ 26 мая 2010

Код вашего сервера действительно соответствует параметру jsoncallback? Если я вас правильно понимаю, вы просто возвращаете

({"positiveCount":"0","negativeCount":"999"})

, тогда как P в JSONP означает, что вам нужно вернуть

callback1234({"positiveCount":"0","negativeCount":"999"})

где callback1234 - значение параметра jsoncallback. (Хотя в URL указано jsoncallback=?, JQuery интерпретирует это специально и заменяет ? уникальной сгенерированной строкой.)

Кроме того, что сказал Т. Дж. Краудер .

1 голос
/ 26 мая 2010

попробуйте это:

$j.getJSON(
  "http://localhost:8080/WWTestHarnessWEB/ReadersToolkitFinalController.htmjsoncallback=?", 
  {'uID': 1}, 
  function(data, status){
    alert(status);
  });

что означает этот вывод?

0 голосов
/ 26 мая 2010

Приветствую ребят за ответы.

Оказалось, что это было очень привередливо, и применяя кусочки того, что вы, ребята, показали мне, сработало

вот мой код jquery $j.getJSON( "http://localhost:8080/WWTestHarnessWEB/ReadersToolkitFinalController.htm?jsoncallback=?",<br> {'uID': 1},<br> function(data, status){ if (status != 'success') { alert("Status is: " + status); } var positiveCount = data.positiveCount;<br> var negativeCount = data.negativeCount; $j('td[id*="posiiveVoteId"]').html(getCorrectCountString(positiveCount)); $j('td[id*="negativeVoteId"]').html(getCorrectCountString(negativeCount)); });

Мой ответ json выглядит следующим образом: `ParamsHeadersPostPutResponseCacheHTMLJSON Источник заголовка ответа Сервер Apache-Coyote / 1.1 Приложение типа контента / json; charset = ISO-8859-1 Content-Language en-US Контент-длина 80 Дата Ср, 26 мая 2010 16:38:43 GMT Запрос источника заголовков Хост localhost: 8080 User-Agent Mozilla / 5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.9.2.3) Gecko / 20100401 Firefox / 3.6.3 Принять текст / JavaScript, приложение / JavaScript, / Accept-Language en-us, en; q = 0,5 Принять кодировку gzip, deflate Accept-Charset ISO-8859-1, utf-8; q = 0,7, *; q = 0,7 Keep-Alive 115 Поддержание связи Приложение Content-Type / x-www-form-urlencoded X-Requested-With XMLHttpRequest Реферер http://localhost:8080/WWTestHarnessWEB/jsp/ReadersToolkit/Json.jsp Cookie JSESSIONID = 93FDA3BD0D2450D7FA4BD9A76C388F8A

jsonp1274891923240 ({ "positiveCount": "0", "negativeCount": "999"}) `

Еще раз спасибо Дэмиен

...