我试图从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中,它返回get
200ok,所以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响应作为函数参数。