1

我正在尝试通过 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) {
                }
            }); 
        });

但是什么都没有发送,当我var_dump($_POST)在 PHP 中执行时,我得到:

数组 (size=0) 空

我究竟做错了什么?

4

2 回答 2

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.

于 2013-05-09T18:42:30.183 回答
-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}
于 2013-05-09T18:50:22.400 回答