gpt4 book ai didi

javascript - Json 识别为 String

转载 作者:行者123 更新时间:2023-11-30 15:12:13 26 4
gpt4 key购买 nike

我正在尝试读取给我以下 JSON 的服务器响应:

{"result": "Success", "message": "[{\"model\": \"mysite.userprofile\", \"pk\": 1}, {\"model\": \"mysite.userprofile\", \"pk\": 4}]"}

当我尝试阅读它时,我得到的是一个字符串。如果我尝试解析它是不可能的,因为它给了我

Unexpected token o in JSON at position 1

这意味着它已经是一个 Json。

所以这段代码:

$.ajax({
type: 'POST',
contentType: 'application/json',
dataType: 'json',
url: '/search/?city=&radius=',
success: function (data) {
//data = JSON.parse(data);
var ul = document.getElementById("contact-list");
console.log("JSON? "+data.message[0]); // Print [ which is the first char

for (var x = 0; x < data.message.length; x++){
// iterate throw every character in the message
}

所以在属性('result' 和 'message')里面它看起来是一个 String 而不是 Json

这是服务器端:

def search_profiles_by_loc(request):
if request.method == "POST" and request.is_ajax():
city = request.POST.get('city', False)
all_profiles = UserProfile.objects.all()
response_data = {}
response_data['result'] = 'Success'
response_data['message'] = serializers.serialize('json', all_profiles)
return HttpResponse(JsonResponse(response_data), content_type="application/json")

我试了很多东西都没用

最佳答案

正如 harish-reddy 所说,dataType 属性将行为设置为您期望的响应。也就是说,成功函数的“数据”参数已经是一个 JavaScript 对象。

引用http://api.jquery.com/jQuery.ajax/

正如 arpit-solanki 所提到的,响应对象中的消息属性不是一个数组,而是被解释为一个字符串(注意开头的 '"'),因此您要么更改服务器端以向您发送一个实际的数组,要么您必须 JSON.parse(data.message) 才能获取其内容。

关于javascript - Json 识别为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44946390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com