今天做測試工作,發現了一個令我費解的問題,jquery的getJson方法在firefox上運作可以得到傳回的結果,但是在ie8上測試,竟發現沒有發送請求,故不能取到任何傳回的結果,經曆了一翻周折,找到了百度空間http://hi.baidu.com/fengluolyn/blog/item/0ac6b7130d8985ddf7039e83.html上的解決辦法,便摘抄了下來……
1 讓每次調用的url都不一樣
方法:在參數中加一個随機數。
例1:
jQuery.getJSON("$!{Root}/a/a/s.ashx",{ID:"123456",Name:"john",random:Math.random()},function(responseText){}
例2:
"xxx.aspx?randID="+Math.random
例3:
"xxx.aspx?randID="+ escape(new Date())
2 将cache設為False
$.ajax不緩存版:
$.ajax({
type:"GET"
cache:false,
dataType:"html",
success:function(msg){
alert(msg);
}
});
3.在labels.html檔案的頂部加入以下聲明:
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
4.load函數不僅可以調用HTML,也可以調用script,比如labels.php,可以在php檔案裡使用header函數:
<?php
header("Cache-Control: no-cache, must-revalidate");
?>
5 使用post代替get方法。
使用Post方式需注意:
設定header的Context-Type為application/x-www-form-urlencode確定伺服器知道實體中有參數變量. 通常使用XmlHttpRequest對象的SetRequestHeader("Context-Type","application/x-www- form-urlencoded;")。例:
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
參數是名/值一一對應的鍵值對,每對值用&号隔開.如 var name=abc&sex=man&age=18,注意var name=update.php?
abc&sex=man&age=18以及var name=?abc&sex=man&age=18的寫法都是錯誤的;
參數在Send(參數)方法中發送,例: xmlHttp.send(name); 如果是get方式,直接 xmlHttp.send(null);
伺服器端請求參數區分Get與Post。如果是get方式則$username = $_GET["username"]; 如果是post方式,則$username = $_POST["username"];
6 在服務端加 header("Cache-Control: no-cache, must-reva lidate");
7 在ajax發送請求前加上 xmlHttpRequest.setRequestHeader("If-Modified-Since","0");
8 在ajax發送請求前加上 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache");