2012-06-13 170 views
0

我是Django + Ajax的新成員。我的問題是我無法從我的ajax POST請求中獲得價值。我正在使用jquery postDjango Ajax將變量傳遞給視圖

我的任務是對可拖動列表項進行排序。拖放不是問題。從POST請求獲取值是問題。它返回MultiValueDictKeyError

"Key 'ages' not found in <QueryDict: {u'action': [u'updateRecords'], u'ages[]': [u'80', u'81', u'79', u'82', u'83', u'84', u'85', u'86']}>"

這裏是我的ajax:

$(function() { 
    var url = ""; /* won't place it*/ 
    $("ul#ages").sortable({ opacity: 0.6, cursor: 'move', update: function() { 
      var order = $(this).sortable("serialize") + '&action=updateRecords'; 
      $.post(url, order, function(theResponse){ 
       alert('success'); 
      }); 
     } 
    }); 
}); 

這裏的觀點:

if request.is_ajax(): 
     if request.POST['action'] == "updateRecords": 
      update_record_array = request.POST['ages'] 

      order_counter = 1; 

      for record_id in update_record_array: 
       Age.objects.filter(id=record_id).update(order_id=order_counter) 
       order_counter += 1 

誰能幫助我嗎?

謝謝!

回答

1

錯誤信息顯示出了什麼問題 - 您正在查找密鑰ages,但是您發送了一些名爲ages[]的東西,並帶有一些額外的方括號。

如果您已將這些括號放在字段名稱中,則不需要它們 - 這是一個PHP主題。 (這可能不是你的錯:jQuery已知可以自己添加它們。)無論如何,你都需要使用request.POST.getlist(fieldname)來獲取與該關鍵字關聯的多個值列表。

+0

謝謝!這樣可行! 'request.POST.getlist( '年齡[]')' – justin