2013-05-09 2 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

+0

@adeneo, возможно, символично для фигурных скобок –

+0

@adeneo Да {ldelim} и {rdelim} будут заменены на {и}, потому что я использую Smarty framework – Kaj

ответ

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

+0

Но массив все равно будет построен и должен быть отправлен на сервер, даже если объект является тем, что следует использовать? – adeneo

+1

@adeneo Но использование массива и '['id']' будет устанавливать свойство и не будет отправлено в запросе – Ian

-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. –