
最近一個專案,有一個a標簽跳轉到附件文本串列頁面,在a標簽內有個onclick事件,通過ajax傳來的資料判斷有沒有附件,在執行判斷期間會顯示加載頁面$("#loading").show();如果有附件就會跳轉到附件串列頁面(也就是執行herf),如果沒有附件就會提示“此項沒有附件”,也不會執行跳轉(herf)。
現在如果ajax為同步的話$("#loading").show();會在ajax執行之后執行,而設為同步的話在success內的if判斷結束之后沒辦法回傳false使href不執行。
我該如何才能既做到使$("#loading").show();在ajax之前執行,又做到success內的if判斷結束之后回傳false使href不執行。
請大神指教。
uj5u.com熱心網友回復:
這個沒必要同步異步,你在success里面直接寫你要的結果就可以了。a標簽不要寫href,你在success里面用location.href控制跳轉。
$("#loading").show();
$.ajax({
success: function(res) {
if(有附件){
location.href="https://bbs.csdn.net/topics/地址";
$("#loading").hide();
}else {
$("#loading").hide();
jAlert("沒有附件");
}
}
});
uj5u.com熱心網友回復:
有用這種方法實作過,但是用這種方法在專案里的改動量太大了,能不能還是通過href跳轉uj5u.com熱心網友回復:
$("#loading").show();
// 定義一個變數,表示是否有附件
var hasFile = false;
$.ajax({
// 改為同步請求
async: false,
success: function(res) {
if(有附件){
hasFile = true;
}
}
});
return hasFile;
uj5u.com熱心網友回復:
這樣的話$("#loading").show();會在ajax之后執行uj5u.com熱心網友回復:
你可以嘗試在show里增加回呼函式
比如 $("#loading").show('fast',function(){
$.ajax({
success: function(res) {
...
}
});
});
uj5u.com熱心網友回復:
有這樣試過,但是if執行完后還會跳轉頁面uj5u.com熱心網友回復:
改成同步模式
uj5u.com熱心網友回復:
不論同步還是異步都一樣會跳轉uj5u.com熱心網友回復:
要$("#loading").show();先顯示出來,ajax就只能用異步。你可直接讓onclick事件回傳false,禁止a標簽的跳轉。
然后在success內的if判斷有附件時用 location.href = a標簽.herf 來跳轉。
uj5u.com熱心網友回復:
你要在a鏈接的onClick里加入return
function goUrl() {
return false;
}
<a href="http://www.baidu.com" onClick="goUrl();">跳轉</a> 無效
應改為
<a href="http://www.baidu.com" onClick="return goUrl();">跳轉</a>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/51616.html
標籤:JavaScript
