制作查询字符串和序列化方法之间的区别

时间:2012-07-13 05:26:37

标签: jquery

有两种方法可以通过ajax发送表单数据:

  1. 手动创建查询字符串并将其作为ajax发布数据传递。例如。

    $.ajax(function(){
        type: 'post',
        data:"val1="+$("#input1").val()+"&val2="+$("#input1").val(),
        .....
    });
    
  2. 使用$('#myForm')。serialize()方法,例如

    $.ajax(function(){       
        type: 'post',
        data:$("#myForm").serialize(),
        .....
    });
    
  3. 通过这两种方式发送表单数据之间的主要区别是什么。

5 个答案:

答案 0 :(得分:3)

Serialize将对您的数据进行urlencode。此外,它将遍历所有表单元素。手动创建查询字符串需要您手动执行此操作。这是一个很好的捷径:)

答案 1 :(得分:2)

Jquery serialize()方法使用标准的URL编码表示法创建文本字符串。此链接可能适合您。

答案 2 :(得分:0)

关键区别是$(“#myForm”)。serialize()转义符号。它使url编码

答案 3 :(得分:0)

.serialize()方法以标准URL编码表示法创建文本字符串。它在表示一组表单元素的jQuery对象上运行。表单元素可以有几种类型:

<form>
<div><input type="text" name="a" value="1" id="a" /></div>
<div><input type="text" name="b" value="2" id="b" /></div>
<div><input type="hidden" name="c" value="3" id="c" /></div>
<div>
<textarea name="d" rows="8" cols="40">4</textarea>
</div>
<div><select name="e">
<option value="5" selected="selected">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select></div>
<div>
<input type="checkbox" name="f" value="8" id="f" />
</div>
<div>
<input type="submit" name="g" value="Submit" id="g" />
</div>
</form>

.serialize()方法可以作用于选择了单独表单元素的jQuery对象,例如,和。但是,通常更容易选择标记本身进行序列化:

$('form').submit(function() {
alert($(this).serialize());
return false;
});

这会生成标准的查询字符串:

a=1&b=2&c=3&d=4&e=5

答案 4 :(得分:-1)

他们基本上做同样的事情。 $("#myForm").serialize()有点清晰,你知道如果名称发生变化,例如<input type="text" name="val" value="1" id="a" />变为<input type="text" name="val2" value="1" id="a" />,那么它会将其取出,数据字段将为“val2 = 1”。但如果您使用手动字符串构建,那么它仍然是“val = 1”。所以差别不大。如果你想验证表格,那么第一个选项可能会更好。