今天做測試工作,發現了一個令我費解的問題,jquery的getJson方法在firefox上運行可以得到返回的結果,但是在ie8上測試,竟發現沒有發送請求,故不能取到任何返回的結果,經歷了一翻周折,找到了網上一篇文章的解決辦法,便摘抄了一下,並做了一些修改。
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" url:'test.html' , cache:false, dataType:"html", success:function(msg){ alert(msg); } });
3. 在labels.html檔案的頂部加入以下聲明:
#e57b118234dbe923c36926980f7b4a4e
4ef21fe295e452c3aeb67780abbc5800
4.load函數不僅可以呼叫HTML,也可以呼叫script,例如labels.php,可以在php檔案裡使用header函數:
9b4ff8636ad11d974623d2e6c01d296e
#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。 $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");
#
以上是解決jQuery.getJSON的快取問題的幾個方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!