javascript沒有加載完就不可以響應ajax請求了麼

有一個link,click時會觸發原生的get請求,當然你也可以使用javascript 生成一個ajax請求來響應並且屏蔽掉原生的get請求,但此時會遇到這樣的問題:如果javascript還沒有load結束,就無法得到想要的ajax請求結果。

有兩種思路還解決這個問題。

1. 依照請求的類型還處理

如果一個請求是ajax請求,在qi在其請求的header裏會出現X-Requested-With字段的header,那麼就可以通過捕獲該信息來分別響應ajax請求和原生請求。


2. 限制在load javascript過程中不做任何操作

在javascript加載過程中,不響應任何操作。以link爲例,只需要使用別的attribute來生成ajax請求即可,假設原先的link爲,

<a href="www.google.com"/>

現在只需寫成,

<a href="#" data-rel="www.google.com"/>

並且在javascript中添加這樣一段即可

$(a).click(function(e) {

e.defentDefault();

var url=$(this).data(rel);

window.location.url;

});


當然,也可以使用<a href=" void(0);" data-rel="www.google.com"/>,其中 void(0)於#的區別在於前者會停留在頁面保持不動,後者會進行本頁刷新;並且使用前者可以避免在響應qing請求時忘記給返回值;第三使用前者可以避免忘記處理throw exception的情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章