【发布时间】:2016-08-13 00:29:25
【问题描述】:
我有一个包含关联数组字段的表单:
<label for="my_array[][system]">System</label>
<input id="my_array[][system]" type="text" value="" name="my_array[0][system]">
<label for="my_array[][name]">Name</label>
<input id="my_array[][name]" type="text" value="" name="my_array[0][name]">
我正在尝试使用 Ajax 将此表单发布到 PHP。我试过这个:
$.ajax({
type: "POST",
dataType: "json",
url: ajaxurl,
data: {
action: "update_postmeta",
post_id: post_id,
nonce: nonce,
my_array: $('input:text[name="my_array*"]')
.each(function() { values[this.name] = $(this).val() })
},
success: function (response) {
alert(response);
},
error: function ( jqXHR, textStatus, errorThrown) {
alert("Error: " + textStatus + '\r\n\r\n' + errorThrown);
}
})
问题出在这行代码上:
my_array: $('input:text[name="my_array*"]')
.each(function() { values[this.name] = $(this).val() })
.each() 不是一个函数...我不知道如何让my_array 以与使用常规表单提交(没有 Ajax)相同的结构填充表单数据。
当使用关联数组创建表单时,如何发布表单数据?
【问题讨论】:
-
将其发布为 JavaScript 对象
-
您的问题并不完全清楚。
$.fn.each()是一个函数,它应该可以填充数组。您是说.each()不起作用,还是您不能通过$.ajax()将数组作为数据发布? -
@Nostalg.io 我认为问题出在我的选择器上 - 是否正确使用星号来选择关联数组表单字段?由于选择器失败 .each() 无效,我认为? :S
-
是的,你是对的。我一直在一个空的 JavaScript 控制台上用一个已知的好 ajaxurl 测试它。那一行确实破坏了功能。奇怪的是,“破坏”部分本身运行良好......
-
好的。我认为这也有错误,但首先我希望您尝试一下。使用新的 jQuery
.ajax()API。函数签名将url作为第一个参数:jQuery.ajax( url [, settings ] )