1、ajax执行先后顺序
funcitonA(){
$.ajax({
url:"index.html",//异步请求路径
async:false,//默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
success:function(){//回调函数
}});
B();
}
写代码时老是遇见要ajax请求一些action,之后另外一个B方法想要得到ajax方法 返回结果,但是ajax是异步的,所以很有可能还没有执行完就执行B方法了。
解决办法如下:给asysc属性设为false,意思同步请求,这样保证A执行完在执行B。
2、一个页面同时发起多个ajax请求,会出现阻塞情况
我知道原因出在哪里了,是PHP的session。执行session_start();后其它进程就无法对session文件进行读或写操作,必须等到该进程结束后才能开始下一个进程。解决的方案是不使用session或用session_write_close();关闭session以让其它进程有操作权限。
前端发送Ajax请求到服务器,服务器返回数据这一过程,因原因不同耗时长短也有差别,且这段时间内页面显示空白。如何优化这段时间内的交互体验,以及长时间内服务器仍未返回数据这一问题,是我们开发中不容忽视的重点。
常见的做法是:
1、设置超时时间,一旦时间超过设定值,便终止请求;
2、页面内容加载之前,手动增加一个 loading 层。
代码如下:
getAjax: function (method,apiUrl,options,callback){
var xhr = $.ajax({
type: method,url: apiUrl,data: options,timeout: 5000,// 设置超时时间
dataType: "json",beforeSend: function (xhr){
$.showLoading(); // 数据加载成功之前,使用loading组件
},success: function(json){
$.hideLoading(); // 成功后,隐藏loading组件
if(callback && callback instanceof Function === "true") {
callback(json);
}
},error: function (textStatus){
console.error(textStatus);
},complete: function (XMLHttpRequest,status){
if(status == 'timeout') {
xhr.abort(); // 超时后中断请求
$.alert("网络超时,请刷新",function (){
location.reload();
})
}
}
})
} http://www.cnblogs.com/fayin/p/6387044.html
![a.gif](a.gif)
总结
以上是编程之家为你收集整理的前端-ajax请求常见问题全部内容,希望文章能够帮你解决前端-ajax请求常见问题所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。