簡體   English   中英

Django / JS:json.dumps和parse.json

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM