2016-05-14 79 views
0

我使用ajax來傳遞json數組以在django中查看。我的索引頁面分爲左右兩列,每列都有一些文本輸入,並且我有一個按鈕'Save'來將左右兩側的所有文本值保存到db中。我創建了2個json數組來存儲2列的值,然後通過ajax傳遞它們。但在view.py中只收到一個json數組。如何發送2 json數組通過ajax在django中查看

這是我的代碼Ajax和代碼view.py:

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

}) 

這是我的view.py代碼:

def add_label_value(request): 
if request.method == 'POST': 
try: 
    if request.is_ajax(): 
     order_header = OrderHeader() 
      jsonRight = json.loads(request.POST.get('jsonRight')) 
      for x in jsonRight: 
       order_header.label = x.label 
       order_header.value = x.value 
       order_header.position = 'right' 
       order_header.save() 
      jsonLeft = json.loads(request.POST.get('jsonLeft')) 
      for y in jsonLeft: 
       order_header.label = y.label 
       order_header.value = y.value 
       order_header.position = 'left' 
       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

因爲你發射了兩個請求而不是一個請求,所以在一個請求中發送這個'{jsonRight:jsonRight,jsonLeft:jsonLeft}'。 – ishaan

回答

0

請包括一個AJAX請求後兩種情況,並將其發送你的看法。你在這裏做的錯誤是你發送兩個不同的請求。

var jsonArrLeft = []; 
    var jsonArrRight = []; 
    $('#btnSave').on('click', function() { 
     $('.form-group right').each(function() { 
      debugger; 
      value = $(this).find("input[name='ValueRight']").val() 
      label = $(this).find("input[name='LabelRight']").val() 
      jsonArrRight.push({ 
       label: label, 
       value: value 
      }) 
     $('.form-group left').each(function() { 
      value = $(this).find("input[name='ValueLeft']").val() 
      label = $(this).find("input[name='LabelLeft']").val() 
      jsonArr.push({ 
       label: label, 
       value: value 
      }) 
      var jsonLeft = JSON.stringify(jsonArrLeft); 
      var jsonRight = JSON.stringify(jsonArrRight); 
      $.ajax({ 
       url: '{% url 'add_label_value' %}', 
       method: 'POST', 
       dataType: 'JSON', 
       data: { 
        'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val(), 
        'jsonRight ': jsonRight , 
        'jsonLeft': jsonLeft  


}, 
      success: function (data) { 
       alert(data); 
      } 
     }); 
    }) 
+0

一個正確的答案包括一個解釋......不僅僅是代碼。如果沒有解釋,答案對任何人都不瞭解,你知道你做了什麼以及它如何幫助OP的情況 – charlietfl