Ответ JQuery Ajax не вызывает успеха - PullRequest
0 голосов
/ 22 мая 2010

Это мой код,

$.ajax({
            type:"get",

            //this doesn't work
            //url:'http://example.com/json.php',

            //But this works
            url:'http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?',

            dataType:"jsonp",
            success:function(data){
                alert('success');
            },
            error:function(){
                alert('error');
            } 
});

в json.php у меня

<?php
header("Content-type: application/javascript");
?>

Затем я скопировал весь вывод этого URL-адреса flickr. Так что проблема не в содержании моего кода, а в том, как он отправляется. Что мне нужно исправить здесь?

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

Ответы [ 2 ]

3 голосов
/ 22 мая 2010

jQuery вызывает success обратный вызов для запросов JSONP, на что указал Ник Крейвер.

Вы добавили обратный вызов в свой скрипт PHP?

Взгляните на эту статью: http://remysharp.com/2007/10/08/what-is-jsonp/

В вашем файле json.php вы должны сделать что-то вроде:

<?php
$jsonstuff = '{ something: "somethingHere" }';
echo $_GET['callback'] . "(" . $jsonstuff . ")";
?>

Поскольку обратным вызовом JSONP по умолчанию в jQuery является callback.

Это потому, что jQuery добавляет обратный вызов со случайным именем строки (если вы не укажете его как jsonpCallback в опциях. Дополнительную информацию можно найти в документации. Вы не увидите добавленный обратный вызов, потому что он не является частью URL, он добавляется jQuery только во время выполнения метода $.ajax.

Вы можете понять, что я имею в виду, попробовав: http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=myCallBackHandler

Если обработчик не выполняется, jQuery не вызывает успешное выполнение и завершает обработчики, указанные в параметрах $.ajax.

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

Правильный Тип содержимого для файла JSON:

  header( 'Content-type: application/json' );

Может ли это быть проблемой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...