我不是程序员,所以我无法查看 Django 或 Jquery 的源代码并弄清楚这些函数如何以及为什么不从它们返回我想要的东西,因为我根本不会理解源代码。
我为自己做了一个小项目,这是我对 json 部分的困惑:这是我的 django/python 函数:
def searchPatients(request):
patients = Patients.objects.filter(KeyName__icontains=request.POST.get('KeyName'))
response = []
for patient in patients:
tmpvar = {}
tmpvar = { 'Name1':patient.Name1, 'Name2':patient.Name2 }
response.append(tmpvar)
return HttpResponse(json.dumps(response), content_type="application/json")
我签入了 shell,json.dumps(response) 给了我这个:
'[{"Name2": "TestName2", "Name1": "TestName1"}, {"Name2": "TempName2", "Name1": "TempName1"}]'
对我来说看起来不错。然后我不明白部分开始。这是我的 JS/JQuery 函数:
input_newRecord_Search.keyup(function() {
$.post('/edit/ajax_search_patients', { KeyName: $(this).val() }, function(data) {
var patients = jQuery.parseJSON(data);
for (var patient in patients) {
$('#searchResults ul').append('<li>'+patients[patient].Name1+'</li><li>+'patients[patient].Name2+'</li>');
};
}, "json");
});
我收到一个错误:“SyntaxError:JSON.parse:意外字符”。我检查了 jquery 从服务器获取的数据:console.log(data):
[{Name2: "TestName2", Name1: "TestName1"}, {Name2: "TempName2", Name1: "TempName1"}]
因此,据我所知,JSON 语法看起来像 - {"key":"value"} 并且我缺少关键字段上的引号。而且我不明白为什么我想念他们。例如,我可以通过正则表达式手动输入它们,但我认为这不是正确的方法。并且使用正则表达式我可以解析我的整个数据而不需要 jQuery.parseJSON(),但我想再次使用 jQuery 函数——毕竟它正是为此目的而制作的。谁能帮我解决这个问题?