我有下面这个jQuery-AJAX代码和一个表单:
<script type="text/javascript">
$(document).ready(function () {
$('form').submit(function () {
form_data = $(this).serializeArray();
$.ajax({
url: "/frontend_dev.PHP/coche1/update/id/1",type: "POST",data: form_data
});
});
return false;
});
</script>
正如你可以看到我使用serializeArray(),但是当我使用serialize()它也工作相同..
为什么在这两种情况下都是一样的?我应该用什么?
我使用symfony作为PHP框架。如果您需要,我可以为您提供更多信息。
解决方法
如果一个对象/数组通过(
.serializeArray()返回),它将通过
$.param()进行序列化。
如果一个字符串被传递(.serialize()返回),它不会做任何进一步的事情。
所以当它们作为data属性传递时,它们具有相同的效果。 You can find the relevant check here:
// convert data if not already a string
if ( s.data && s.processData && typeof s.data !== "string" ) {
s.data = jQuery.param( s.data,s.Traditional );
}
你应该使用哪一个?在这里真的没关系,.serialize() makes the same $.param() call,所以他们做同样的工作量。我个人使用.serialize(),因为它只是较少的键入。