jQuery-mobile:JSONP请求使用$.ajax(),$.getJSON未触发回调函数



我试图从web服务器获取JSON数据,但它不起作用。

$.mobile.showPageLoadingMsg();
//$.getJSON('http://localhost:8000/'+site+'/?format=json&callback=?', {}, function(){alert();});
$.ajax({
    url : 'http://localhost:8000/'+site +'/?format=json&callback=?',
    type : 'GET',
    dataType : 'jsonp',
    jsonp : 'callback',
    success : function(){alert('success');},
    error : function(){alert('fail')}
});

$.getJSON$.ajax两个方法的回调函数根本没有启动。怎么了?

我的网络服务器代码:

response_data.append({
            'user_nickname' : post.user_nickname,
            'title' : post.title,
            'recommend' : post.recommend,
            'oppose' : post.oppose,
            'date' : str(post.date),
            'hit' : post.hit,
            'commentcount' : post.commentcount
            })
    return HttpResponse(simplejson.dumps(response_data), mimetype='application/json')

在insepector中,它返回get200ok,所以HttpResponse没有问题。

以下是回应:

[{"命中":5,"标题":"\uc624\ud1a0\uc774\uc2a4\ucf00\uc774\ud551\ub418\ub294\uac00","评论计数":0,"反对":007:01:22.453000+00:00","user_nickname":"\ud55c\uae00\ub85c\uc5b\ub9c8\ub098\uae38\uac8c\uae4c\uac00\ub2a5\ud558\ub7ef\uc778\u3131\u3147\u3139\u3147\ub05d"},{"命中":4,"标题":"\uc5ec\uae30\uae00\uc4f0\uba74?","评论计数":1,"反对":0,"推荐":0、"日期":"2012-07-2406:52:05.125000+00:00","user_nickname":"\ud55c\uae00\ub85c\uc5b\ub9c8\ub098\uae38\uac8c\uae4c\uac00\ub2a5\ud558\ub7ef\uc778\u3131\u3147\u3139\u3147\ub05d"}]

$.ajax()从不触发成功回调函数。它只是调用错误的alert('fail');

您的响应不是JSONP:它只是一个JSON数组。

如果您将ajax调用中的datatype更改为'json',那么您的回调应该会触发。

但是,如果你真的需要使用JSONP——如果你试图进行跨站点通信——那么你需要返回有效的JSONP作为你的服务器响应。您的服务器需要使用javascript函数调用形式的字符串进行响应,使用jsonp参数的值作为函数名称,使用JSON响应作为函数参数。

最新更新