我正在尝试将编码为JSON的Django HttpResponse发送给Javascript。
的Python:
response_data = {}
response_data['status'] = 'incomplete'
return HttpResponse(json.dumps(response_data), content_type="application/json")
Jquery的:
function auth_request(){
$.ajax({
url: AUTH_ENDPOINT + "myid0001",
context: document.body,
success: function(response){
console.log(response);
console.log(response.status);
if(response.status == "incomplete"){
//do something here
}
}
}
});
}
控制台为第一个控制台日志输出{"status": "incomplete"}
,为访问状态元素的console.log函数输出undefined
。
我尝试使用JSON.parse(response)
,但收到错误
Uncaught SyntaxError: Unexpected token a
我认为该文件表明该对象已经是JSON对象。但是,如果我检查对象的类型,它会显示字符串。如何访问响应JSON对象的元素?
答案 0 :(得分:0)
当收到Json时,你需要将Json解析回JS对象。否则,它只是文字。
如果你在Ajax调用中指定dataType: "json"
,jQuery会为你做这件事。
答案 1 :(得分:0)
我找到了解决方案。事实证明我的Django设置返回了一些额外的字符串项,所以当我尝试设置dataType时:" json" (正如@Daniel Roseman建议的那样)或者在jQuery函数中或者使用JSON.parse(响应)我收到了一个错误。我能够删除额外的字符串并且它正常工作。