我有一个表格,我使用AJAX提交。为了将数据从表单获取到PHP脚本,我对数据进行了序列化。除了这些数据之外,我还要包括来自表单外部的动态数据的另一个数组。这是我所拥有的示例:
$(function() {
var $form = $('form'),
formData = $form.serializeArray(),
arr = ["Saab", "Volvo", "BMW"]; /* Just an example array */
formData.push({name: 'dynamic-array', arr});
console.log(formData);
/*
$.ajax({
type: 'POST',
url: 'http://example.com',
data: formData
}).done(function() {
console.log('Submitted');
});
*/
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<input name="name" type="text" value="Lorem" />
<input name="number" type="text" value="Ipsum" />
</form>
因此,当我控制台日志formData
阵列推到序列化形式的数据后,它正确地表明,附加的阵列。但是,当我尝试以PHP形式print_r($_POST)
时,无法访问其他数组:
Array ( [name] => Lorem [number] => Ipsum [dynamic-array] => )
dynamic-array
没有与之关联的数组。
正确的方法是什么?
答案 0 :(得分:1)
从serializeArray
返回的序列化数组的格式是对象数组,其属性名为key
,该属性保存键名,而属性名为value
,该属性保存键名。值。您的新对象没有value
键,因此后端没有正确处理它。尝试使用{name: 'dynamic-array', value: arr}
。