我正在尝试传递这个充满对象的数组:
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
答案 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);
}
});