a標籤href屬性形成的瀏覽器警告provisional headers are shown

最近在作項目時,有一個按鈕是由a標籤作成的,點擊這個按鈕時,會發送一異步請求。當時手抽,不知道咋給它加了個href屬性,而且沒有給它值。代碼相似以下:javascript

<a id="alink" href="">點我吧</a>

異步請求代碼相似以下:
html

$(function(){
	$('#alink').click(function(){
		$.ajax({
			url: "http://localhost:31296/home/handle",
			type: "get",
			data: { callback: "?"},
			dataType: "jsonp",
			beforeSend: function(){
				alert(1);
			},
			success: function(data){
				alert(data.status);
			},
			error: function(a, b, c){
				alert(b);
			}
		});
	});
});

結果當點擊該按鈕的時候,項目中瀏覽器沒有任何反應,而且頁面還自動刷新了。在chrome瀏覽器中調試的時候發現,該請求沒法進入success方法。打開chrome瀏覽器的network這一項並找到該請求,如圖所示:java

在請求報文頭Request Headers這個地方出現了一個警告:provisional headers are shown,另外在標記1的地方,該請求也有可能顯示爲紅色,表示該請求的資源不存在或被取消了。查了下資料,這個警告的意思是該請求的資源會被屏蔽掉。由於對該資源的請求並無真的發生,header裏顯示的信息是僞信息,直到服務器有信息返回,這個header才被更新爲真實的。但也有可能上面全部的一切並不會發生,由於它被屏蔽掉了。這個變故讓我糾結了半天,最後一點點的去排錯,才知道原來是href屬性值形成的。當href屬性爲空時,會跳轉刷新當前頁面,這個請求無疾而終,被屏蔽掉了。給href屬性加個值,讓它不跳轉。ajax

<a id="alink" href="javascript:void(0);">點我吧</a>

a標籤href屬性的值的幾種特殊狀況:chrome

當href=""時,默認值爲當前頁面地址,點擊時會刷新頁面(不設置target值的狀況下);json

當href="#"時,跳轉到當前頁面的開頭處,頁面不會刷新,至關於scrollTo(0, 0);segmentfault

當href="javascript:void(0);"時,頁面不跳轉,也不滾動。瀏覽器

大意會出錯,之後當謹記!服務器


參考資料:http://segmentfault.com/q/1010000000364871異步

相關文章
相關標籤/搜索