$.ajax的一些总结
1.$.ajaxSetup()函数来全局设置
$.ajaxSetup({
url: "/xmlhttp/",
global: false,
type: "POST"
});
$.ajax({ data: myData });
所有的ajax请求都共享ajaxSetup里设置的参数;
2.禁止使用缓存 cache:false;
3.同步请求
var html = $.ajax({
url: "some.php",
async: false
}).responseText;
4.beforeSend事件 在发送请求之前触发,可以修改ajax对象参数,如果return false,本次请求取消;
5.context 可以指定一个DOM元素,在回调函数里边this就指向那个DOM元素;
6.crossDomain 同域请求为false,跨域请求为true,如果你想强制跨域请求(如JSONP形式)同一域,设置crossDomain为true。这使得例如,服务器端重定向到另一个域
7.statusCode 一组数值的HTTP代码和函数对象,当响应时调用了相应的代码。例如,如果响应状态是404,将触发以下警报:
$.ajax({
statusCode: {404: function() {
alert('page not found');
}
});
8.processData 如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。
Ajax跨域请求COOKIE无法带上的解决办法
原生ajax请求方式:
var xhr = new XMLHttpRequest(); xhr.open("POST", "http://xxxx.com/demo/b/index.php", true); xhr.withCredentials = true; //支持跨域发送cookies xhr.send();
jquery的ajax的post方法请求:
$.ajax({ type: "POST", url: "http://xxx.com/api/test", dataType: 'jsonp', xhrFields: { //支持跨域发送cookies withCredentials: true }, //强制跨域请求 crossDomain: true, success: function () { }, error: function () { } })
服务器端设置:
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: http://www.xxx.com");