Jquery的serialize方法有什么用

fsc*_*ore 3 forms ajax jquery web-applications

我们到底为什么需要serialize方法。它附加了表单数据,但是http get为什么还需要它呢?

The serialize() method creates a URL encoded text string by serializing form values.
Run Code Online (Sandbox Code Playgroud)

我为什么要使用它。如果我了解它的正确用法,我将学习在表单中使用它的更好的实践。

Aki*_*son 5

发出AJAX请求时,可以在URL查询字符串中使用序列化的值。

资料取自W3学校

.serialize()不会使用jQuery来获取表单中的所有值,而是提交到外部页面,而是自动为您完成此操作。因此,在您的外部页面中,您可以通过URL获取所需内容并根据需要进行操作

例子是:

你有这样的形式:

<form action="#"  id="input_form">
    first name: <input type="text" name="first name" /><br />
    last name: <input type="text" name="last name" /><br />
    email: <input type="text" name="email" /><br />
    <input type="submit" value="send" name="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

您可以像这样使用AJAX请求:

$(document).ready(function(){
    $("#input_form").submit(function(){
        var first name = $('input[name=first name]').val();
        var last name = $('input[name=last name]').val();
        var email = $('input[name=email]').val();
        var querystring = "first name="+first name+"&last name="+last name+"&email="+email;

        $.ajax({
            url: 'elaboration.php',
            type: "POST",
            data: querystring,
            success: function(data) {
                //code to execute
                    }
            });
            return false;
        });
    });
Run Code Online (Sandbox Code Playgroud)

而不是这样做:

var first name = $('input[name=first name]').val();
var last name = $('input[name=last name]').val();
var email = $('input[name=email]').val();
var querystring = "first name="+first name+"&last name="+last name+"&email="+email;
Run Code Online (Sandbox Code Playgroud)

您可以使用.serialize()代替:

var querystring = $(this).serialize();
Run Code Online (Sandbox Code Playgroud)

.serialize()本质上讲,节省了您的时间和精力,以获取表单中的每个值。