這兩天碰到的問題,IE6下某個js生成的a節點,設置了href="javascript:;",點擊時觸一個ajax請求,但在IE6下就是沒法執行succese裏的內容,因此就用setTimeout設置了個延時執行暫且能夠解決問題。後來同事(感謝勇哥和趙美人的大力支持~)用fiddler查看時提示請求被終止:javascript
因而四方找答案~最終找到刀爺的博客~毫無節操的copy過來了~原地址:http://stylechen.com/ie6-aborted-ajax.htmlhtml
原文:java
場景還原:給a標籤綁定了一個click事件用來觸發ajax請求,在IE6中,請求時常會被中斷,在非IE6中都一切正常。jquery
<a href="javascript:;" id="btn">click me</a> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> var url = "http://api.flickr.com/services/" "feeds/photos_public.gne?tags=car&" "tagmode=any&format=json&jsoncallback=?"; $( "#btn" ).click(function(){ $.getJSON( url, function( data ){ alert( data ); }); }); </script>
在IE6中使用Fiddler2監視請求,常常會出現」aborted」,折騰了許久,至關的詭異。後來將a標籤換成button,請求正常,最後經提醒,多是a標籤的默認事件中斷了請求。可是,在HTML代碼中,已經將a標籤的href設置成了」javascript:;」,一般這樣是能夠阻止默認事件了(頁面跳轉)。a標籤的click事件會先執行,而後才執行href的跳轉,若是href是一段javascript語句,這個時候就會執行。IE6在執行href的javascript語句時就中斷了click觸發的ajax請求。使用href=」javascript:;」是爲了阻止默認事件,將阻止默認事件的動做移到click事件中就能夠解決問題了,這樣就不會執行href中的javascript語句了。ajax
$( "#btn" ).click(function(e){ $.getJSON( url, function( data ){ alert( data ); }); e.preventDefault(); });