我现在一直在摸着这个约一个半小时。所以,我通过$ .ajax发送一个表单,期待从django回来的json响应。
在前端,js看起来像这样
$.ajax({
"type" : "POST",
"url" : action,
"dataType" : "json",
"data" : serialized_form,
"success" : function (data) {
alert('hey')
console.log(data);
//$("#add_shipping").submit();
},
"error" : function (data) {
alert(data)
}
});
在后端,django返回一个塞满序列化json的HttpResponse对象 像这样 - >
redirectUrl = '/user/purchase/' + str(purchase.pk) + '/'
response_data = {}
response_data['redirect'] = redirectUrl
response_data['status'] = 200
rsp = HttpResponse(simplejson.dumps(response_data))
rsp["CONTENT-TYPE"] = "application/json"
return rsp
当jQuery获得响应时,它不是像我要求的那样将其记录到控制台,而是简单地在浏览器中显示格式化的json,并由pre标签包围。我猜这可能与我的Content-type标题有关,但是我可以告诉它用'application / json'来回应。谁能想到我可能做错了什么?谢谢!
答案 0 :(得分:2)
您可能在表单的提交事件中运行该代码而不取消提交。
因此,浏览器正在提交表单并导航到该页面。
添加return false
。