我有下面这个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()
,因为它只是较少的键入。