JQuery Ajax响应没有触发成功

时间:2010-05-22 09:28:32

标签: jquery ajax json

这是我的代码,

$.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");
?>

然后我复制了该flickr网址的所有输出。所以问题不应该在我的代码的内容中,而是如何发送它。我需要在这里解决什么?

提前致谢!

2 个答案:

答案 0 :(得分:3)

jQuery调用JSONP请求的success回调,正如Nick Craver所指出的那样。

您是否已将回调添加到PHP脚本中?

看看这篇文章: http://remysharp.com/2007/10/08/what-is-jsonp/

json.php文件中,您应该执行以下操作:

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

由于jQuery中的默认JSONP回调是callback

这是因为jQuery会附加一个带有随机字符串名称的回调(除非您在选项中将其指定为jsonpCallbackMore information can be found in the documentation. 您不会看到附加的回调,因为它不是URL的一部分,它仅在执行$.ajax方法时由jQuery添加。

你可以通过尝试看到我的意思: http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=myCallBackHandler

如果处理程序没有执行,jQuery不会触发$.ajax选项中指定的成功和完整处理程序。

答案 1 :(得分:0)

JSON文件的正确内容类型是:

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

这可能是问题吗?