记一次奇怪的问题-----ajax发起post请求后面紧跟着重定向,ajax未执行(已解决,待深究原因)
前端退出触发方法,一方面ajax调用后台记录日期,清理回话数据等,另一方法重定向到登录画面
function doSignOff(){ var language = "<%= language %>" ; if(!window.confirm('<liana:I18N name="您确定要退出吗"/>')){ return; } sendAjaxRequest('post','<%=utb.getURL("signOut.do")%>','',signOutTurnPage); if(language==null||language==""||language=="ZH_CN"){ window.location.href ='<%= webAppPath %>'; }else if(language=="EN_US"){ window.location.href ='<%= webAppPath %>' + 'index_EN_US.html'; }else{ window.location.href ='<%= webAppPath %>'; } }
ajax集成方法如下
function sendAjaxRequest( method, url, params, callbackFunction, waitFunction ){ params = params + "&responseFormat=JSON"; params = params + "&random="+Math.random(); params = encodeURI(params); var config = { method:method, data:params, uri:url, success:callbackFunction } if(waitFunction==null) config.wait = function(){}; else config.wait = waitFunction; sendAjaxRequestYUI(config); }
function sendAjaxRequestYUI(config){ YUI().use("io-base","json-parse", function(Y) { // Define a function to handle the response data. var c = { method:config.method, data:config.data, on:{ success:success, start:start, complete:complete }, sync:config.sync } function success(id, o, args) { var id = id; // Transaction ID. var data = o.responseText; // Response data. var context = Y.JSON.parse(data); if(context.ec){ context.errorCode = context.ec; } if(context.em){ context.errorMessage = context.em; } config.success(context); }; function start() { config.wait(true); } function complete() { config.wait(false); } var request = Y.io(config.uri,c); }); }
但是前端执行退出时,F12和后台断点并没有记录或捕获到异步请求,所以断定未发起请求,最后解决如下
function doSignOff(){ var language = "<%= language %>" ; if(!window.confirm('<liana:I18N name="您确定要退出吗"/>')){ return; } sendAjaxRequest('post','<%=utb.getURL("signOut.do")%>','',signOutTurnPage); setTimeout(() => { if(language==null||language==""||language=="ZH_CN"){ window.location.href ='<%= webAppPath %>'; }else if(language=="EN_US"){ window.location.href ='<%= webAppPath %>' + 'index_EN_US.html'; }else{ window.location.href ='<%= webAppPath %>'; } // 等待50毫秒 }, 50); }
一开始在ajax方法发起的下方插入一个ajax,发现可以正常发起异步请求记录,所以就延迟执行后面的重定向方法,解决问题。
但是是什么原因导致的有待深究!记录一下,备考。