我的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调用:
$.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