[英]Django/JS: json.dumps and parse.json
我不是程序員,所以我無法查看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")
我簽入外殼,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函數-畢竟正是出於這個目的。 有人可以幫我嗎?
訣竅是,當您告訴jQuery.post
服務器正在返回JSON時,它將為您解析它 。
// This line can be safely removed;
// jQuery is doing it for you behind the scenes
var patients = jQuery.parseJSON(data);
當您在已解析的數據上使用parseJSON
時,您最終會嘗試解析JavaScript對象的字符串表示形式。 只需使用已解析的數據,一切就可以正常工作。
jQuery會自動為您將json對象轉換為js對象。 您不需要自己調用解析。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.