0
我試圖重定向url來登錄url,只要我的服務器在狀態碼中發送403。重定向url無法與ajax同步調用
function processget_sync(data1, url1, handler)
{
url1=server_url + url1;
data1=JSON.stringify(data1);
jQuery.ajax({
type : "GET",
url : url1,
dataType : "json",
contentType : "application/json; charset=utf-8",
cache : false,
async: false,
statusCode: {
403:function(){
redirectFunction();
}
},
success : function(ret) {
handler(ret,null);
},
error : function(err) {
handler(null,err);
}
});
function redirectFunction(){
console.log("before redirection")
window.location.href = "../signin/index.html";
console.log("after redirection")
}
它既是console.logs打印,重定向之前和重定向之後。但重定向沒有發生。它工作正常,如果我給異步:真。我試過使用window.location.assign(),window.location.replace(),location.href和所有其他解決方案給出的類似問題的線程。一切似乎都在我的情況下工作
退一步,考慮你爲什麼會可能要使用同步調用?它幾乎沒有必要,它會給用戶帶來可怕的用戶體驗(鎖定瀏覽器,如果請求花費的時間超過正常,這可能會讓他們認爲它已經崩潰),甚至在某些瀏覽器中不推薦使用,所以您可以合理地期待它今後完全停止工作。你認爲需要同步呼叫的原因是什麼?你正在爲成功/錯誤正確地實現回調,所以它不是對異步代碼流的誤解,就像我有時看到的那樣。 – ADyson
這個特殊的功能正在我的項目中的多個地方使用,所以如果我現在調用異步,我需要檢查所有需要時間的影響,所以我想知道是否有一個快速修復請求被同步發送本身 – Jerry
在這種情況下,我現在將對「錯誤」回調中的特定狀態代碼進行測試。 – ADyson