2

我正在尝试传递这个充满对象的数组:

var steps = [
    {
        bla: blu,
        bla: blu,
        bla: blu
    },
    {
        // etc.. 3 more times same format
    }
];

使用 jQuery 的 $.ajax() 函数到我的 codeigniter 控制器。

我试过这样:

$.ajax({
    url: base_url + 'index.php/worldmap/ajax/start_travelling',
    type: 'POST',
    data: {
        steps: steps
    },
    success: function(response){
        console.log(response);
    }
});

但是我得到一个 typeError 并发现传递给控制器​​的数据对象必须是 key => value 格式。我读到它确实需要一个对象。

所以我想如果我通过了步骤数和每个单独的步骤,我会在我的 codeigniter 控制器中再次将它们放在一个数组中。

所以我最终得到:

var dataToSend = {
    num_steps: steps.length
};

var i = 1;

$.each( steps, function( index, value ) ){
    dataToSend.step+i = value; // I want the key to be step_1, step_2 etc..
    i += 1;
};

$.ajax({
    url: base_url + 'index.php/worldmap/ajax/start_travelling',
    type: 'POST',
    data: dataToSend,
    success: function(response){
        console.log(response);
    }
});

但是您可能会猜到.step + 1似乎不起作用。做我想做的事情的正确语法是什么?或者,如果有人知道将多级数组传递给我的 ci 控制器的更好方法,请分享:D

4

1 回答 1

0

您的 JSON 对象格式正确,您应该能够从 PHP 读取数据,您可以提供更多显示 php 代码的信息。

您唯一可能缺少的是对数据进行字符串化:

var steps = [
    {
        bla: blu,
        bla: blu,
        bla: blu
    },
    {
        // etc.. 3 more times same format
    }
];

var dataToSend = { steps: steps };

$.ajax({
    url: base_url + 'index.php/worldmap/ajax/start_travelling',
    type: 'POST',
    data: JSON.stringify(dataToSend),
    success: function(response){
        console.log(response);
    }
});
于 2013-10-12T08:50:33.367 回答