我正在尝试使用 django 返回 ajax 请求的 json 响应。Json 响应是一个序列化的 python 字典。我确信字典包含足够的数据,但它没有到达客户端。服务器端我有这个 python 例程:
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 是一个执行 POST ajax 请求的 jQuery 插件,代码如下:
$.postJSON = function(url, data, callback) {
return jQuery.ajax({
'type': 'POST',
'url': url,
'contentType': 'application/json',
'data': JSON.stringify(data),
'dataType': 'json',
'success': callback
});
};
控制台和标有“结果”的标签中都没有输出。
现在编辑它返回 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);
});
我已经在 Firebug 下对其进行了测试,并且响应到达了客户端,但是:1)使用小数组(1 个元素)将其打印出来 2)响应使 Chromium 开发人员工具和 Firebug 都崩溃(打开 JSON 选项卡时,在响应选项卡中我得到只有一条响应和消息“已达到 Firebug 响应大小限制。单击此处在新的 Firefox 选项卡中打开整个响应”。
谢谢