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

09-25 20:00