0

通过ajax发送表单数据有两种方式:

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

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

    $.ajax(function(){       
        type: 'post',
        data:$("#myForm").serialize(),
        .....
    });
    

通过这两种方式发送表单数据的主要区别是什么。

4

5 回答 5

3

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

于 2012-07-13T05:32:24.783 回答
2

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

于 2012-07-22T11:38:32.597 回答
1

关键区别在于 $("#myForm").serialize() 转义了符号。它使 url 编码

于 2012-07-13T05:35:37.930 回答
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
于 2012-07-13T05:44:15.427 回答
-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”。所以差别不大。如果您想验证表格,那么第一个选项可能会更好。

于 2012-07-13T05:40:01.843 回答