我正在嘗試用django返回ajax請求的json響應。 Json響應是一個序列化的Python字典。我確信字典包含足夠的數據,但它不會到達客戶端。 服務器端我有這條巨蟒程序:無法通過django網絡應用程序返回json響應
def routine(request):
response_dict = {}
f = open("output.txt", "r")
for line in f:
line.strip('\n ')
(key, val) = line.split('\t')
if re.search("^[a-zA-Z][a-zA-Z0-9]*$", key) != None:
if re.search("^[0-9]+$", val) != None:
response_dict[key] = val
f.close()
json_response = json.dumps(response_dict)
return HttpResponse(json_response, mimetype='application/json')
客戶端我有這個JavaScript + jQuery的程序(下面編輯,請參閱該版本):
$.postJSON('ajax/routine', '', function(data)
{
console.debug(data);
console.debug(data.result);
$("#result").html(data.result);
});
postJSON是一個jQuery插件,做POST ajax請求,代碼如下:
$.postJSON = function(url, data, callback) {
return jQuery.ajax({
'type': 'POST',
'url': url,
'contentType': 'application/json',
'data': JSON.stringify(data),
'dataType': 'json',
'success': callback
});
};
沒有輸出既沒有寫入控制檯也沒有用「結果」標識n標籤。
編輯現在它返回200個Http狀態碼,124個爲data.result。在我調試的服務器和json.dumps完美地工作。
EDIT2我已經編輯我的jQuery/JavaScript代碼:
$.postJSON('ajax/routine', '', function(data)
{
array = {};
for(key in data)
{
array = key + " " + data[key];
}
$("#result").html(array);
});
我螢火蟲下進行測試,並響應到達客戶端,但:1)的小陣列(1個元件)它在打印2)響應使我崩潰Chromium開發人員工具和Firebug(當打開JSON選項卡時,在響應選項卡中,我只獲得一小段響應,並顯示「Firebug響應大小限制已達到。」單擊此處以打開整個響應新的Firefox標籤「。
謝謝
你確定你沒有得到403 csrf缺少的答案,在該AJAX文章? – 2012-07-05 10:04:34
我很確定我使用了csrf標記,如https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/#csrf-ajax中所述.. 反正POST的返回代碼是200 – gc5 2012-07-05 10:07:26
您可以嘗試在發送HttpResponse並在您的開發服務器中驗證之前,在您的視圖中打印JSON。 – Rohan 2012-07-05 10:08:08