【问题标题】:jQuery getJSON Output using Python/Django使用 Python/Django 的 jQuery getJSON 输出
【发布时间】:2011-05-28 10:24:55
【问题描述】:

所以,我正在尝试使用 jQuery .getJSON 对我的本地 Web 服务器进行一个简单的调用,使用 python/django 来提供它的请求。正在使用的地址是:

http://localhost:8000/api/0.1/tonight-mobile.json?callback=jsonp1290277462296

我正在尝试编写一个简单的 Web 视图,它可以访问此 url 并返回一个 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.jsonhttp://localhost:8000/api/0.1/tonight-mobile.json&callback=jsonp1290277462296 直接访问此 URL,并取回一个有效的 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。有人可以帮我指明方向吗?

【问题讨论】:

    标签: python django-views jsonp getjson


    【解决方案1】:

    首先,callback = request.GET.get('callback=?', '') 不会让您获得 callback 的值。

    callback = request.GET.get( 'callback', None ) 
    

    效果更好。

    调试这种东西。您可能希望在 Django 视图函数中包含 print 语句,以便查看发生了什么。例如:print repr(request.GET) 是一个有用的东西放入视图函数中,以便您可以看到 GET 字典。

    【讨论】:

    • S.Lott,感谢您的回复。但是,您的回答似乎没有给我任何结果 - 我认为只是一个错误说明:'QueryDict' object is not callable..
    • @user546459:我进行了更改。你可以做“调试”,你知道的。你尝试不同的东西。添加print 语句。实验。这是允许的,你知道的。
    猜你喜欢
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    相关资源
    最近更新 更多