我正在尝试阅读服务器的响应,它给出了以下JSON:
{"result": "Success", "message": "[{\"model\": \"mysite.userprofile\", \"pk\": 1}, {\"model\": \"mysite.userprofile\", \"pk\": 4}]"}
当我尝试阅读它时,我得到一个字符串。如果我试图解析它是不可能的,因为它给了我
位置1的JSON中出现意外的令牌o
这意味着它已经是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
}
所以在属性('结果'和'消息')中,它显示为有一个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")
我尝试过很多无效的事情
答案 0 :(得分:2)
正如harish-reddy所说,dataType属性将行为设置为您希望响应的行为。也就是说,成功函数的“data”参数已经是一个JavaScript对象。
请参阅http://api.jquery.com/jQuery.ajax/
正如arpit-solanki所说,响应对象中的message属性不是一个数组,而是被解释为一个字符串(注意起始的'“'),因此你要么改变服务器端来发送一个实际的数组,要么就是你必须JSON.parse(data.message)才能获取其内容。
答案 1 :(得分:0)
您收到的响应已由JSON.stringify执行。您必须使用JSON.parse或更改服务器端的逻辑