My Ajax публикует поля формы, созданные с использованием ассоциативного массива, и все работает, но структура возвращаемых данных неверна.Изменить структуру ассоциативного массива, отправленного Ajax
поля формы:
<input id="my_array[][system]" type="text" value="" name="my_array[0][system]">
<textarea id="my_array[][note]" type="text" value="" name="my_array[0][note]"></textarea>
<input id="my_array[][system]" type="text" value="" name="my_array[1][system]">
<textarea id="my_array[][note]" type="text" value="" name="my_array[1][note]"></textarea>
<input id="my_array[][system]" type="text" value="" name="my_array[2][system]">
<textarea id="my_array[][note]" type="text" value="" name="my_array[2][note]"></textarea>
Аякса вызов:
$.ajax(ajaxurl, {
type: "POST",
dataType: "json",
data: {
action: "update_postmeta",
post_id: post_id,
nonce: nonce,
my_array: (function() {
var my_array = {};
$('input:text[name^="my_array"], textarea[name^="my_array"]')
.each(function() {
my_array[this.name] = $(this).val();
});
return my_array;
})()
},
success: function (response) {
alert(response);
},
error: function (jqXHR, textStatus, errorThrown) {
alert("Error: " + textStatus + '\r\n\r\n' + errorThrown);
}
})
Результаты в:
array(3) (
[my_array[0] => array(2) (
[system] => (string) Some system 1
[note] => (string) Note 1
)
[my_array[1] => array(2) (
[system] => (string) Some system 2
[note] => (string) Note 2
)
[my_array[2] => array(2) (
[system] => (string) Some system 3
[note] => (string) Note 3
)
)
Мне нужно, чтобы это было:
array(3) (
[0] => array(2) (
[system] => (string) Some system 1
[note] => (string) Note 1
)
[1] => array(2) (
[system] => (string) Some system 2
[note] => (string) Note 2
)
[2] => array(2) (
[system] => (string) Some system 3
[note] => (string) Note 3
)
)
Решение в следующем коде:
my_array: (function() {
var my_array = {};
$('input:text[name^="my_array"], textarea[name^="my_array"]')
.each(function() {
my_array[this.name] = $(this).val();
});
return my_array;
})()
Но мои попытки просто разорвать его хуже. Как получить желаемую структуру? В принципе, мне нужно второе измерение, чтобы быть ключи индекса вместо «my_array [1» и т.д.
Там есть несколько синтаксических ошибок в вашем примере кода. Я не совсем уверен, что вы намеревались. – rwkiii
@ rwkiii Я обновил свой фрагмент кода. Идея заключается в анализе атрибута имени на биты. – jedifans
Ваш ответ будет работать для меня, если я изменил ссылки на [[0] 'на' [1] 'и ссылку' [1] 'на' [2] '. Надеюсь, что это имеет смысл, но да, это работает, чтобы дать мне структуру, в которой я нуждаюсь. Может быть, ваш ответ должен быть отредактирован, чтобы отразить то, что сработало? Благодарю. – rwkiii