serialize()、serializeArray()可以把表单序列化,但是不能获得到禁用属性的表单元素和没有age属性的表单元素数据。
1,HTML
<!-- 设置password 为禁用 disabled="disabled"-->
<!-- 设置age没有name属性 -->
<form action="/test0.ds" method="get">
<table>
<tr><th>name:</th><th><input type="text" name="name"/><tr>
<tr><th>age:</th><th><input type="text" id="age"/></th><tr>
<tr><th>password:</th><th><input type="text" disabled name="password"/></th><tr>
<tr><th>email:</th><th><input type="text" name="email"/></th><tr>
<tr><th>detail:</th><th><textarea name="detail" rows="5" cols="20"></textarea></th><tr>
</table>
<input type="button" id="btn" value="提交"/>
</form>
2,JS
<script type="text/javascript">
$("form #btn").click(function(){
var serialize=$("form").serialize();
console.log(serialize);
var serializeArray=$("form").serializeArray();
console.log(serializeArray);
});
</script>
可以知道,serialize()得到的是一个key-value拼接的字符串。serializeArray()得到的是一个包含key-value对象的数组。
3,ajax 提交- serialize()、serializeArray()
<script type="text/javascript">
$("form #btn").click(function(){
//$("form").submit();
$.ajax({
url: "/test0.ds",
//data: $("form").serialize(),
data: $("form").serializeArray(),
dataType: "json",
success: function(result){
console.log(result)
},
error:function(){
console.log("错误。");
}
});
});
</script>
4,传递到后端的参数: