Python json.dumps 的 JSON 响应

1 投票
2 回答
2983 浏览
提问于 2025-04-18 08:26

我正在尝试将一个用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"},而第二次打印了 undefined,这是因为我在尝试访问状态元素时出现了问题。

我试过用 JSON.parse(response) 来解析,但出现了一个错误:

Uncaught SyntaxError: Unexpected token a,这个错误是在jquery.js文件中出现的,我觉得这说明对象已经是一个JSON对象了。不过,当我检查这个对象的类型时,它显示的是字符串。那我该怎么访问这个响应的JSON对象里的元素呢?

2 个回答

0

我找到了问题的解决办法。原来是我的Django设置返回了一些多余的字符串项,所以当我尝试设置数据类型为“json”(就像@Daniel Roseman建议的那样),或者在jQuery函数中使用JSON.parse(response)时,就出现了错误。后来我把多余的字符串去掉了,结果就正常工作了。

0

当你收到Json数据时,需要把它转换回JavaScript对象。否则,它只是普通的文本。

如果你在Ajax调用中指定 dataType: "json",jQuery会帮你自动处理这个转换。

撰写回答