2013-05-09 76 views
1

我試圖通過AJAX發送一些數據在陣列將其保存到數據庫中,我建立數組是這樣的:jQuery的AJAX不發送陣列

$("#saveordering").button().click(function(event) { 
      event.preventDefault(); 

      var data = document.getElementById('tabs'); 
      var categories = data.getElementsByTagName("div"); 
      var categoryArray = new Array(); 

      for (var i=0; i < categories.length; i++) { //Loop door de categoriëen 
       var category = categories[i]; 
       var categoryId = category.getAttribute('id'); 

       categoryArray[i] = new Array(); 

       categoryArray[i]['id'] = categoryId; 
       categoryArray[i]['forums'] = new Array(); 

       var forums = category.getElementsByTagName("li"); 
       for (var j=0; j < forums.length; j++) { //Loop door de forums 
        var forum = forums[j]; 
        var forumId = forum.getAttribute('id'); 
        categoryArray[i]['forums'][j] = new Array(); 
        categoryArray[i]['forums'][j]['id'] = forumId; 
       } 
      } 
      $.ajax({ 
       type: 'POST', 
       url: "ajax/updateboardorder.php", 
       dataType: 'json', 
       data: {ldelim}"categories" : categoryArray{rdelim} , 
       success: function(data) { 
       } 
      }); 
     }); 

但沒有什麼是發送,當我做在PHP var_dump($_POST)我越來越:

陣列(大小= 0)空

我在做什麼錯?

+0

'數據:{ldelim} 「類別」:categoryArray { rdelim}'< - 這看起來對你有效嗎? – adeneo 2013-05-09 18:41:14

+0

@adeneo可能是它的象徵性花括號 – 2013-05-09 18:41:55

+0

@adeneo是{ldelim}和{rdelim}將被替換爲{和},這是因爲我使用Smarty框架 – Kaj 2013-05-09 18:42:01

回答

3

看看這段代碼

categoryArray[i] = new Array(); 
categoryArray[i]['id'] = categoryId; 
categoryArray[i]['forums'**strong text** 

嗯,這是不是一個 「陣列」,你這是一個關聯數組

categoryArray[i] = {}; 
categoryArray[i]['id'] = categoryId; 
categoryArray[i]['forums'] = {}; 

categoryArray[i] = { 
    "id" : categoryId, 
    "forums" : {} 
}; 

希望對象。與之後的代碼forums一樣。

+0

而且......你必須將**明確定義的**數組轉換爲JSON ... – gustavodidomenico 2013-05-09 18:44:27

+0

但是該數組仍然會生成,並且應該發送到服務器,即使對象是應該使用的對象? – adeneo 2013-05-09 18:47:27

+1

@adeneo但是使用數組和'['id']'會設置一個屬性,並且不會在請求中發送 – Ian 2013-05-09 18:50:24

-1

這是發生了什麼事情給你的陣列:

var a = new Array(); 
a['id'] = 123; 

JSON.stringify(a); // [] 
a; // [] 
a.length; // 0 

a.id; // 123 

您正在嘗試使用像原始對象數組:

var o = {}; 
o.id = 123; 

JSON.stringify(o); // {"id":123} 
+0

來自downvoters的評論歡迎。 – 2013-05-09 19:16:16