Это мой код,
$.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. Так что проблема не в содержании моего кода, а в том, как он отправляется. Что мне нужно исправить здесь?
Заранее спасибо!
jQuery вызывает success обратный вызов для запросов JSONP, на что указал Ник Крейвер.
success
Вы добавили обратный вызов в свой скрипт PHP?
Взгляните на эту статью: http://remysharp.com/2007/10/08/what-is-jsonp/
В вашем файле json.php вы должны сделать что-то вроде:
json.php
<?php $jsonstuff = '{ something: "somethingHere" }'; echo $_GET['callback'] . "(" . $jsonstuff . ")"; ?>
Поскольку обратным вызовом JSONP по умолчанию в jQuery является callback.
callback
Это потому, что jQuery добавляет обратный вызов со случайным именем строки (если вы не укажете его как jsonpCallback в опциях. Дополнительную информацию можно найти в документации. Вы не увидите добавленный обратный вызов, потому что он не является частью URL, он добавляется jQuery только во время выполнения метода $.ajax.
jsonpCallback
$.ajax
Вы можете понять, что я имею в виду, попробовав: http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=myCallBackHandler
Если обработчик не выполняется, jQuery не вызывает успешное выполнение и завершает обработчики, указанные в параметрах $.ajax.
Правильный Тип содержимого для файла JSON:
header( 'Content-type: application/json' );
Может ли это быть проблемой?