JSON / JSONP в JQuery - PullRequest
       14

JSON / JSONP в JQuery

0 голосов
/ 08 апреля 2010

Я пытаюсь выяснить, почему мой метод $ .getJSON не работает, а $ .ajax работает просто отлично. Во-первых, вот мой вызов getJSON:

$.getJSON("http://localhost:1505/getServiceImageList?callback=loadImagesInSelect", loadImagesInSelect);

Вы можете видеть, что я попытался добавить параметр обратного вызова непосредственно в строку запроса (также пробовал его не в строке) и добавил ссылку на метод обратного вызова, определенный в моем файле js.

Вот вызов $ .ajax, который отлично работает:

function getImages() {
            $.ajax({
                type: "GET",
                url: $('#txt_registry_url').val(),
                dataType: "jsonp",
                success:loadImagesInSelect ,
                error:function (xhr, ajaxOptions, thrownError) {
                    alert(xhr.status);
                    alert(thrownError);
                }

            });
        }

В этом примере URL, извлеченный из текстового поля, такой же, как при прямом вызове getJSON. Когда вызов метода завершается, вызывается successMethod, и все обрабатывается нормально.

Несмотря на то, что я хорошо владею последним из двух методов, в документах создается впечатление, что getJSON является предпочтительным способом записи вещей.

Может кто-нибудь объяснить, что мне не хватает в сокращенном методе, чтобы все это работало?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 апреля 2010
$.getJSON("http://localhost:1505/getServiceImageList?data=yes&callback=?", loadImagesInSelect);

function loadImagesInSelect(json) {
   //whatever you want on success
}

затем на стороне сервера с php (примечание: я добавил данные в строку запроса GET)

$data = getDataAsJSON($_GET['data']);
echo $_GET['callback'] . '(' . $data . ');';

getJSON должен видеть "callback =?"

Я бы придерживался $ .ajax

0 голосов
/ 08 апреля 2010

из того, что я понимаю, вам нужно использовать

$.getJSON("http://localhost:1505/getServiceImageList?callback=?", loadImagesInSelect);

jQuery позаботится о присвоении имени обратному вызову, а затем о переадресации вызова loadImagesInSelect

Надеюсь, это поможет Джером ВАГНЕР

...