解決jQuery ajax請求在IE6中莫名中斷的問題
場景還原:給a標簽綁定了一個click事件用來觸發(fā)ajax請求,在IE6中,請求時常會被中斷,在非IE6中都一切正常。
<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監(jiān)視請求,經(jīng)常會出現(xiàn)”aborted”,折騰了許久,相當?shù)脑幃悺:髞韺標簽換成button,請求正常,最后經(jīng)提醒,可能是a標簽的默認事件中斷了請求。但是,在HTML代碼中,已經(jīng)將a標簽的href設(shè)置成了”javascript:;”,通常這樣是可以阻止默認事件了(頁面跳轉(zhuǎn))。a標簽的click事件會先執(zhí)行,然后才執(zhí)行href的跳轉(zhuǎn),如果href是一段javascript語句,這個時候就會執(zhí)行。IE6在執(zhí)行href的javascript語句時就中斷了click觸發(fā)的ajax請求。使用href=”javascript:;”是為了阻止默認事件,將阻止默認事件的動作移到click事件中就可以解決問題了,這樣就不會執(zhí)行href中的javascript語句了。
$( "#btn" ).click(function(e){
$.getJSON( url, function( data ){
alert( data );
});
e.preventDefault();
});
注:e.preventDefault(); 這一句的作用就是阻止js中的默認事件。
以上就是本文的全部內(nèi)容,希望能給大家一個參考,也希望大家多多支持腳本之家。
- jQuery解決IE6、7、8不能使用 JSON.stringify 函數(shù)的問題
- jquery fancybox ie6不顯示關(guān)閉按鈕的解決辦法
- jquery submit ie6下失效的原因分析及解決方法
- 解決jquery的.animate()函數(shù)在IE6下的問題
- 關(guān)于jquery中動態(tài)增加select,事件無效的快速解決方法
- jQuery:delegate中select()不起作用的解決方法(實例講解)
- jquery html動態(tài)生成select標簽出問題的解決方法
- jQuery選中select控件 無法設(shè)置selected的解決方法
- jQuery 跨域訪問問題解決方法
- jquery的ajax()函數(shù)傳值中文亂碼解決方法介紹
- jQuery在ie6下無法設(shè)置select選中的解決方法詳解
相關(guān)文章
jQuery Ajax異步處理Json數(shù)據(jù)詳解
jquery ajax處理json數(shù)據(jù)其實與其它ajax處理數(shù)據(jù)沒什么很大的改動,我們只要簡單處理一下ajax部份的dataType數(shù)據(jù)類型等于json即可解決了2013-11-11
javascript原生和jquery庫實現(xiàn)iframe自適應高度和寬度
這篇文章主要介紹了javascript原生和jquery庫實現(xiàn)iframe自適應內(nèi)容高度和寬度,需要的朋友可以參考下2014-07-07
Jquery中$.post和$.ajax的用法小結(jié)
本節(jié)重點講的是jquery中調(diào)用ajax的4種方法中最常用的:$.post、和$ajax。如果讀者沒有javascript和jquery的知識,或者沒有ajax的概念,那么請先去問問度娘,再來讀本文。2015-04-04
JQuery設(shè)置獲取下拉菜單某個選項的值(比較全)
這篇文章主要介紹了JQuery如何設(shè)置獲取下拉菜單某個選項的值(比較全),需要的朋友可以參考下2014-08-08

