如何将变量添加到对象键的末尾?

时间:2013-08-13 00:16:39

标签: jquery ajax object dynamic key

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

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 =>中价值形式。我读到它确实需要一个对象。

所以我认为,如果我通过了步骤数和每个单独步骤,我将在我的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

1 个答案:

答案 0 :(得分: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);
    }
});