用于在向服务器发送请求前添加一些处理函数。例如:搜寻附近店铺,未搜寻出来的时候显示:正在搜寻中...php
常见的一种效果,在用ajax请求时,没有返回前会出现前出现一个转动的loading小图标或者“内容加载中..”,用来告知用户正在请求数据。这个就能够用beforeSend方法来实现。html
代码以下:前端
防止重复数据
在实际项目开发中,提交表单时经常因为网络或者其缘由,用户点击提交按钮误认为本身没有操做成功,进而会重复提交按钮操做次数,若是页面前端代码没有作一些相应的处理,一般会致使多条一样的数据插入数据库,致使脏数据的增长。要避免这种现象,在$.ajax请求中的beforeSend方法中把提交按钮禁用掉,等到Ajax请求执行完毕,在恢复按钮的可用状态。jquery
举个例子:ajax
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
// 提交表单数据到后台处理
$.ajax({
type:
"post"
,
data: studentInfo,
contentType:
"application/json"
,
url:
"/Home/Submit"
,
beforeSend:
function
() {
// 禁用按钮防止重复提交
$(
"#submit"
).attr({ disabled:
"disabled"
});
},
success:
function
(data) {
if
(data ==
"Success"
) {
//清空输入框
clearBox();
}
},
complete:
function
() {
$(
"#submit"
).removeAttr(
"disabled"
);
},
error:
function
(data) {
console.info(
"error: "
+ data.responseText);
}
});
|
模拟Toast效果
ajax请求服务器加载数据列表时提示loading(“加载中,请稍后...”),数据库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
$.ajax({
type:
"post"
,
contentType:
"application/json"
,
url:
"/Home/GetList"
,
beforeSend:
function
() {
$(
"loading"
).show();
},
success:
function
(data) {
if
(data ==
"Success"
) {
// ...
}
},
complete:
function
() {
$(
"loading"
).hide();
},
error:
function
(data) {
console.info(
"error: "
+ data.responseText);
}
});
|
方法beforeSend,用于在向服务器发送请求前添加一些处理函数。这是一个ajax事件,在ajax请求开始以前就被触发,一般容许用户修改XMLHttpRequest对象(好比说设置附加的头部信息),关于ajax事件的解释可参考文档:http://docs.jquery.com/Ajax_Eventsjson
咱们还见到一种状况,不少网站在加载内容的过程当中给出“数据加载中,请稍候”的提示,当内容被加载完毕后显示内容。能够设置默认文本显示为加载中的提示,当内容加载完毕时,咱们能够经过ID选择器,将该标签中的文本替换成最终的内容。以此来取代beforeSend,效率更高。服务器
何时用beforeSend,何时用文本替换,取决于ajax请求先后你所展现的DOM元素是否一致,若是你所展现的DOM元素在请求以前已经存在,那么经过上述文本替换的方式来处理会好些,若是除此之外你还需增长其余的需求,那么仍是用beforeSend来处理吧。网络