Jquery 如何在另一个ajax中处理ajax回调&x27;是否在异步发送事件之前发送?

Jquery 如何在另一个ajax中处理ajax回调&x27;是否在异步发送事件之前发送?,jquery,ajax,callback,Jquery,Ajax,Callback,我试图在用户启动ajax函数之前,使用beforeSend事件和回调检查互联网连接(我不想使用syncajax)。我相信我在这里遗漏了一些东西,因为ping函数总是返回未定义的值,而不管回调如何 我的回调函数是 function checkNetConnection(u, s, e) { var c=0 $.ajax({ success: s(), error: e, url: u, type: 'Get',

我试图在用户启动
ajax
函数之前,使用
beforeSend
事件和回调检查互联网连接(我不想使用sync
ajax
)。我相信我在这里遗漏了一些东西,因为ping函数总是返回未定义的值,而不管回调如何

我的回调函数是

function checkNetConnection(u, s, e) {
    var c=0
    $.ajax({
        success: s(),
        error: e,
        url: u,
        type: 'Get',
    });
}
因此,我创建了一个代码片段来显示两个
ajax
调用,其中一个只是测试,第二个是实现回调。我在这里做错了什么,因此在
beforeSend
事件中回调不会返回true

函数testcall(){
$.ajax({
beforeSend:function(jqXHR){},
url:“https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js",
键入:“获取”,
成功:功能(res){
log('jquery.min.js call ok!')
},
错误:函数(jqXHR、textStatus、errorshown){
log(“jquery.min.js调用失败”);
}
});
};
功能检查网络连接(u、s、e){
$.ajax({
成功:s,
错误:e,
网址:u,
键入:“Get”,
});
}
函数callthis(){
$.ajax({
发送前:函数(jqXHR){
如果(检查网络连接)https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js",
函数(){
返回true;
},
函数(){
返回false;
}
)) {
log(“jquery.min.js调用ok”);
}否则{
log(“jquery.min.js调用失败”);
jqXHR.abort();
};
},
url:“https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js",
键入:“获取”,
成功:功能(res){
log('jquery.min.js call ok!')
},
错误:函数(jqXHR、textStatus、errorshown){
log(“jquery.min.js调用失败”);
}
});
};
$(“#bt1”)。单击(函数(){
testcall();
});
$(“#bt2”)。单击(函数(){
称之为()的;
});




beforeSend
是一个同步函数,ajax不是。您正试图暂停基于异步函数的函数的执行。您不能这样做,因为执行
checkNetConnection
不会阻止
beforeSend
直到得到结果,它将开始执行检查网络连接的Ajax调用,然后在网络连接Ajax触发回调之前执行Ajax for jQuery库

此外,你为什么还要检查网络连接?用户最终到达您的页面了吗?如果他失去了连接,您将得到一个错误,因此您可以通过ajax
error
回调来处理错误