ajax book
我的常用ajax样例
// url(String):请求地址 // param(String):请求参数 // targetId(String):结果显示id function ajaxReq(url, param, targetId) { $.ajax({ type : "post", url : url, data : param, beforeSend : function() { $("#btn").attr({ disabled : "disabled" }); $("#firstDiv").removeClass("red"); $("#firstDiv").addClass("green"); $("#secondDiv").show(1000); }, success : function(data) { var json = eval("(" + data + ")"); if (json.errorCode == "0000") { $("#secondDiv").hide(); $("#btn").css("background-color", "green"); $("#" + targetId).val(json.respInfo); } else { $("#btn").css("background-color", "red"); } }, complete : function() { validateAddress(); }, error : function(data) { $("#firstDiv").removeClass("green"); $("#firstDiv").addClass("red"); $("#flag").removeClass("active"); console.info("error: " + data.responseText); } }); }
参数说明:
data
类型:String
发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。
data参数可以为纯字符串,对象,数组,如下
var param1 = "纯字符串"; var param2 = { "name" : "cici", "age" : "18", "address" : "china" }; param2["birthDate"]="2000-01-01"; var param3 = ["id1","id2","id3"];
contentType
真实请求目标服务器的内容类型
类型:
默认值:
dataType
期望目标服务器返回的数据类型
类型:
默认值:
processData
https://segmentfault.com/q/1010000007410014
类型:Boolean
默认值: true。默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。
让ajax请求时带head头
在ajax请求后台时在请求标头RequestHeader加token--http://www.cnblogs.com/zfdcp-028/p/6374632.html
解决拦截器对ajax请求的的拦截
拦截器配置:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object obj) throws Exception {
//获取判定登陆的session是否存在
String token = (String) request.getSession().getAttribute("token");
String postId = (String) request.getSession().getAttribute("postId");
if(token == null || token == ""){
String XRequested =request.getHeader("X-Requested-With");
if("XMLHttpRequest".equals(XRequested)){
response.getWriter().write("IsAjax");
}else{
response.sendRedirect("/m-web/user/toLogin");
}
return false;
}
if(postId == null || postId == ""){
String XRequested =request.getHeader("X-Requested-With");
if("XMLHttpRequest".equals(XRequested)){
response.getWriter().write("IsAjax");
}else{
response.sendRedirect("/m-web/user/toLogin");
}
return false;
}
return true;
}
1、判断 String XRequested =request.getHeader("X-Requested-With") 的值,目的是判断是否是ajax请求。
2、response.getWriter().write("IsAjax");写出一个响应的数据给ajax,这样就可以在ajax里面做判断
判断的方式存在两种方式:
1)直接在ajax里面做判断(不建议)
success:function(data){
if(data == "IsAjax"){
window.location.href="m-web/user/toLogin"
return;
}
}
2)改jQuery源码然后在做压缩,是针对全局的方式来修改的(建议)
if ( isSuccess ) {// if no content
if ( status === 204 || s.type === "HEAD" ) {
statusText = "nocontent";
// if not modified
} else if ( status === 304 ) {
statusText = "notmodified";
// If we have data, let's convert it
} else {
statusText = response.state;
success = response.data;
error = response.error;
isSuccess = !error;
//解决ajax拦截问题
var result = responses.text;
if(result.indexOf("IsAjax")>=0){
window.location.href="m-web/user/toLogin";
return;
}
}
}


浙公网安备 33010602011771号