使用Python/Django获取jQuery getJSON输出
我正在尝试使用 jQuery 的 .getJSON 方法,向我本地的 Python/Django 服务器发起一个简单的请求。使用的地址是:
http://localhost:8000/api/0.1/tonight-mobile.json?callback=jsonp1290277462296
我想写一个简单的网页视图,可以访问这个网址并返回一个 JSON 数据包(关于具体的元素值和布局我稍后再考虑)。
这是我简单尝试的代码,用来弹出或返回数据:
$.getJSON("http://localhost:8000/api/0.1/tonight-mobile.json&callback=?",
function(json){
alert(json);
<!--$.each(json.items, function(i,item){
});-->
});
我可以直接访问这个网址,无论是 http://localhost:8000/api/0.1/tonight-mobile.json 还是 http://localhost:8000/api/0.1/tonight-mobile.json&callback=jsonp1290277462296,都能得到一个有效的 JSON 数据包……所以我猜问题出在我的初学者 JavaScript 上 :)
生成这个响应的 views.py 函数如下:
def tonight_mobile(request):
callback = request.GET.get('callback=?', '')
def with_rank(rank, place):
return (rank > 0)
place_data = dict(
Places = [make_mobile_place_dict(request, p) for p in Place.objects.all()]
)
xml_bytes = json.dumps(place_data)
xml_bytes = callback + '(' + xml_bytes + ');'
return HttpResponse(xml_bytes, mimetype="application/json")
以及相应的 urls.py 配置:
(r'^tonight-mobile.json','iphone_api.views.tonight_mobile'),
我对如何使用回调函数还有些困惑,可能这就是我遇到问题的地方。请注意,我可以直接调用一个 'blah.json' 文件并得到响应,但通过一个固定的 URL 却不行。有人能给我一些指导吗?
1 个回答
0
首先,callback = request.GET.get('callback=?', '')
这个写法不会得到 callback
的值。
callback = request.GET.get( 'callback', None )
这样做效果会好很多。
要调试这种情况,你可以在你的 Django 视图函数里加一些 print
语句,这样你就能看到发生了什么。例如:在视图函数里加上 print repr(request.GET)
,这样可以帮助你查看 GET 请求的字典内容。