jQuery ajax()使用serialize()提交form数据
1. jQuery的serialize()方法通过序列化表单值,创建URL编码文本字符串,我们就可以选择一个或多个表单元素,也可以直接选择form将其序列化,如:(name 属性需要填写)
<form id="form1">
<input type="hidden" value ="${topicInfo.id}" name="id" id="id" />
<input type="hidden" value ="${topicInfo.status}" name="status" id="status" />
</form>
$(document).ready(function(){
});
可以把序列化的值传给ajax()作为url的参数,轻松使用ajax()提交form表单了,而不需要一个一个获取表单中的值然后传给ajax(),举例如下:
后台如果接收值为null,把contentType: "application/json"去掉(content-Type定义的是发送至服务器的数据类型,data-Type定义的是服务器返回的数据)
$.ajax({ type: 'post', url: 'your url', data: $("#form1").serialize(), dataType:"json", async:true,//默认异步,false-同步 success: function(data) { // your code } });
参考:https://www.cnblogs.com/lijianda/p/8867555.html
2. cmdb中一个展示域名的例子
<div class="ibox-content">
<form id="asset_form">
<div class="col-sm-3">
<div class="input-group">
<input type="text" class="form-control m-b" id="search_input" name="keyword" placeholder="search">
<input type="text" style="display: none">
<div class="input-group-btn">
<button type="button" name="search" class="btn btn-xm btn-primary search_btn" onclick="change_info()">
搜索
</button>
</div>
</div>
</div>
</form>
</div>
<div class="ibox-content">
<div id="replace">
<table class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th class="text-center">序号</th>
<th class="text-center">域名</th>
<th class="text-center">邮箱</th>
</tr>
</thead>
<tbody>
{% for i in domains %}
<tr>
<td class="text-center">{{ forloop.counter }}</td>
<td class="text-center">{{ i.name }}</td>
<td class="text-center">{{ i.email }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<script type="text/javascript">
function change_info(){
$.ajax({
type: "GET",
url: "/assets/domain_search/",
data: $("#asset_form").serialize(), // 发送给服务器的字符串或者key:value键值对
success: function (content) { // content表示根据请求,获得的服务端返回的数据
$("#replace").html(content); //返回页面的一个固定写法,https://blog.csdn.net/dreamstar613/article/details/61913970
}
});
}
</script>
说明:
其中$("#replace").html(content),我的理解是根据data提供给url的请求参数,获得渲染后的url代码段 <div id="replace">...</div>中的内容,也就是局部渲染
努力生活,融于自然

浙公网安备 33010602011771号