2010-12-20 68 views
0

所以,我試圖使用jQuery .getJSON到我的本地web服務器使用python/django來提供其請求的簡單調用。正在使用的地址是:jQuery getJSON輸出使用Python/Django

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

我想寫可以訪問這個URL,返回(後來擔心實際的元素值/佈局)一個JSON數據包作爲結果一個簡單的Web視圖。

這是我在剛剛警告/返回數據進行簡單的嘗試:

$.getJSON("http://localhost:8000/api/0.1/tonight-mobile.json&callback=?", 
function(json){ 
    alert(json); 
    <!--$.each(json.items, function(i,item){ 
    });--> 
}); 

我能夠直接訪問這個URL,無論是在http://localhost:8000/api/0.1/tonight-mobile.jsonhttp://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。有人能幫助我一些方向嗎?

回答

0

首先,callback = request.GET.get('callback=?', '')將不會得到您的值callback

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

效果好多了。

調試這種事情。您可能希望在您的Django視圖函數中包含print語句,以便您可以看到發生了什麼。例如:print repr(request.GET)是一個有用的東西,放入視圖函數,以便您可以看到GET字典。

+0

S.洛特,謝謝你的迴應。然而,你的回答似乎沒有給我任何結果 - 只是在我看來的錯誤,說: 'QueryDict'對象是不可調用的。 – user546459 2010-12-21 03:19:34

+2

@ user546459:我做了一個改變。你知道,你可以做「調試」。你嘗試不同的事情。添加'print'語句。實驗。這是允許的,你知道的。 – 2010-12-21 12:16:35