Я пытаюсь заполнить массив json для отправки на сервер через ajax. Однако он не работает, и я не совсем уверен, почему. Здесь код:
var form = $('.dash-name-form');
form.serializeArray();
input = [];
$.each(form[0], function(){
input.push({
this.name : this.value
});
});
console.log(JSON.stringify(input));
Он работает, когда я делаю следующее:
$.each(form[0], function(){
input.push({
'name' : this.name,
'value': this.value
});
});
Но мне бы очень хотелось получить более простой вывод из первого блока, чтобы лучше работать с базовым интерфейсом, который я использую (laravel Input :: json() → all() не работает со вторым),
Все предложения приветствуются. Благодарю вас.
Вы должны обратить внимание на тот факт, что такие функции, как serializeArray
возвращают значение, и если вы не храните значение в переменной или не используете его напрямую, вызов бесполезен
Попробуйте это вместо этого. Он предоставит вам данные формы в виде простого объекта
var all =$('.dash-name-form').serializeArray(),
data = {};
$.each (all, function (key, val){
data [key] = val;
});
console.log (data);
input.push({
this.name : this.value
});
Похоже, это будет проблемой. this.name
будет интерпретироваться как ключ, а не то, что вы можете ожидать (это то же самое, что делать {"this.name": this.value}
).
var foo = "bar";
var x = {
foo: "test"
}
console.log(x);
Попробуйте вот так:
$.each(form.serializeArray(), function(){
var obj = {};
obj[this.name] = this.value;
input.push(obj);
});
serializeArray
ничего не делает?serializeArray()
, `var formData = form.serializeArray (); Пропустите отправку данных в отдельный массив, если вам не нужно фильтровать или обрабатывать данные.