我下面有这个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()
,因为它键入起来很少。