Я пытаюсь подготовить следующие входные данные
<input type="text" name="customer[firstname]">
<input type="text" name="customer[surename]">
<input type="text" name="customer[cuid]">
, чтобы использовать их в функции ajax для проверки их с помощью PHP. Массив, который я получу, будет выглядеть как $data['customer']['firstname']
.
Это была моя первая попытка
$.each($('input[name^="customer"]').serializeArray(), function() {
data[this.name] = this.value;
});
Проблема: массив в запросе выглядит как $data["[customer[firstname]"]
, и это не красиво и У меня будут разные ключи, такие как product [...], order [...]. Тогда мне понадобится «клиент» в качестве отдельного ключа.
Затем я подумал снять и заменить скобки и просто создать свой собственный массив перед отправкой. Но есть больше проблем, чем я думал ...
var data = {};
$.each($('input[name^="customer"]').serializeArray(), function() {
let name = this.name.replace( ']', '' ).replace( '[', ',' ).split(',')[1];
data['customer'].push({[name] : this.value}); // <- Error: push is not a function
data = { 'customer' : {[name] : this.value} }; // <- Problem: data gets overwritten with the next key:value
data['customer'][name] = this.value; // <- Error: `customer` not defined
});
Эти 3 примера - всего лишь несколько, которые я пробовал ...
Кто-нибудь знает, как решить эту проблему?