Я пытаюсь передать этот массив, заполненный объектами:Как добавить переменную в конец ключа объекта?
var steps = [
{
bla: blu,
bla: blu,
bla: blu
},
{
// etc.. 3 more times same format
}
];
в мой контроллер CodeIgniter с помощью функции JQuery в $ .ajax().
Я пробовал так:
$.ajax({
url: base_url + 'index.php/worldmap/ajax/start_travelling',
type: 'POST',
data: {
steps: steps
},
success: function(response){
console.log(response);
}
});
но я получил TypeError и обнаружил, что объект данных передается в контроллер должен быть в ключе => значение формата. Я читал, что он принимает один объект.
Итак, я понял, что если я пройду количество шагов и каждый шаг по отдельности, я снова их объединю в массив в моем контроллере 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
* 'х + у = z' никогда не будет работать в JavaScript * Левая рука символом' = 'должен быть «присваивается» (он должен быть оценен как тип ссылочной спецификации). Это означает, что это должно быть * variable * или * свойство *, но не произвольное выражение. Теперь помните, что как 'data.x', так и' data ["x"] '(hint:" x "может быть любой строкой в последнем случае) представляют свойство (когда данные называют объект), а массивы могут быть просто проиндексированы 'data [idx]' (который по-прежнему остается лишь свойством). – user2246674
Спасибо за быстрый ответ! Я использовал dataToSend ["step _" + i] = значение, и он работает. Еще раз спасибо ^^ – Haskabab
Рад, что он работает: D Если вообще возможно, я бы использовал массив, чтобы его можно было записать как 'dataToSend [i]' (вместо того, чтобы иметь свойства step_0, step_1, step_x ..). Обычно массивы должны использоваться для повторения последовательностей, тогда как (нормальный) Object/Properties должен использоваться для фиксированного набора именованных значений. – user2246674