2016-05-12 11 views
0

djangoで表示するjson配列を渡すためにajaxを使用しています。しかし、私は各jsonオブジェクトの価値を得ることはできません。私がAttributeErrorオブジェクトをデバッグして表示したとき、 'label'と 'value'という属性はありません。この問題で私を助けてください。これは、ビューの私のコードのAJAXとコードである: - 何json.loadsリターンです -ビュー内の各jsonオブジェクトの値を取得できませんdjango

var jsonArr = []; 

    $('#btnSave').on('click', function() { 
     $('.form-group').each(function() { 
      debugger; 
      value = $(this).find("input[name='ValueRight']").val() 
      label = $(this).find("input[name='LabelRight']").val() 
      jsonArr.push({ 
       label: label, 
       value: value 
      }) 
      var jsonText = JSON.stringify(jsonArr); 
      $.ajax({ 
       url: '{% url 'add_label_value' %}', 
       method: 'POST', 
       dataType: 'JSON', 
       data: { 
        'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val(), 
        'jsonText': jsonText 
       }, 
       success: function (data) { 
        alert(data); 
       } 
      }); 
     }) 
     console.log(jsonArr) 

    }) 
view.py 

def add_label_value(request): 
if request.method == 'POST': 
    try: 
     if request.is_ajax(): 
      order_header = OrderHeader() 
       jsonText = json.loads(request.POST.get('jsonText')) 
       for x in jsonText: 
        order_header.label = x.label 
        order_header.value = x.value 
        order_header.save() 
    except OSError as e: 
     error = messages.add_message(request, messages.ERROR, e, extra_tags='add_label_value') 
     html = '<p>This is not ajax</p>' 
     return HttpResponse(html) 
+0

あなたのdjangoビューメソッドを表示できますか?私は問題は、AJAXが送信するデータの '' label''と '' value''のフィールドが期待されているが、 '' csrfmiddlewaretoken''と '' jsonText''というフィールドを送信しているということです。 – Flaiming

+0

ビューに印刷またはログを追加します。 'request.POST'、' request.POST.get( 'jsonText') 'と' jsonText'の値は何ですか? – Alasdair

+1

なぜOSErrorを捕まえていますか?私はそれを起こすものは何も見えません。 – Alasdair

答えて

0

views.py

import json 

    def add_label_value(request): 
     getjson = json.loads(request.body) 
1

のPythonはJavascriptではない、と辞書に差があるとオブジェクト。ドット表記の辞書キーは参照できません。文字列キーを使用する必要があります。

order_header.label = x['label'] 
    order_header.value = x['value'] 
+0

これは完璧に動作します。ありがとうございました –

+0

それがあなたを助けた場合、答えを受け入れることを忘れないでください。 –

関連する問題