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的情况。

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