Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does serialize() have the same effect as serializeArray() when setting post data for jQuery.ajax()?

i have this jQuery-AJAX code below and a form:

<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>

As you can see I'm using serializeArray() but when i use serialize() it also works the same..

Why in both cases works the same? What of them should i use?

Im using symfony as php framework. I can offer you more info if you need it.

like image 437
ziiweb Avatar asked Nov 20 '10 21:11

ziiweb


2 Answers

If an object/array gets passed (which .serializeArray() returns), it's serialized via $.param().

If a string get passed (which .serialize() returns) it doesn't do anything further.

...so they have the same effect when passed as the data property. 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 );
    }

Which one should you use? It really doesn't matter here, .serialize() makes the same $.param() call, so they do the exact same amount of work. I personally use .serialize() because it's simply less to type.

like image 121
Nick Craver Avatar answered Sep 21 '22 00:09

Nick Craver


In this case, they're the same. But there is a big difference if you do not specify the type - serialize will do a GET and serializeArray will do a POST!

like image 31
user1074426 Avatar answered Sep 18 '22 00:09

user1074426