jquery中ajax學習筆記4_jquery

來源:互聯網
上載者:User
緩衝問題:
何謂緩衝問題?即當瀏覽器的輸入內容相同,即請求的URL相同,這樣瀏覽器就會去讀緩衝,兩次的內容一樣,就不會和伺服器端進行互動。
解決方式:在請求的url中加上時間戳記。
通過我的測試,IE、360兩次使用者名稱輸入一致時不會和伺服器端互動,firefox即使兩次使用者名稱輸入的一樣,仍然會和伺服器端互動。
即:firefox的中伺服器端返回的temp值會每次加1,IE、360就不會改變。故加上時間戳記在這三種瀏覽器中都不會再有緩衝問題。
修改的代碼:
AJAXServer.java
緩衝問題
複製代碼 代碼如下:

//緩衝問題加的測試代碼 輸入內容不變IE、360次數不增加,firefox會增加
Integer inte= (Integer) request.getSession().getAttribute("total");
int temp=0;
if(inte==null){
temp=1;
}else{
temp=inte.intValue()+1;
}
request.getSession().setAttribute("total",temp);

在AJAXServer.java 加入以上代碼,同時out.println的時候把temp變數加進去返回給用戶端。
這樣,如果用戶端的temp值加入,就表示用戶端和伺服器端進行了互動,否則就沒有。
verify.js
複製代碼 代碼如下:

<!--緩衝問題,用時間戳記來解決-->
//給url地址增加時間戳記,騙過瀏覽器,不讀取緩衝
function convertURL(url){
//擷取時間戳記
var timestamp=(new Date().valueOf());
//將時間戳記資訊拼接到url上
//url=“AJAXServer”
if(url.indexOf("?")>=0){
url=url+"&t="+timestamp;
}else{
url=url+"?t="+timestamp;
}
return url;
}
function verifyCache(){
var url="AJAXServer?name="+$("#username").val();
url=convertURL(url); //緩衝
$.get(url,null,function(data){
$("#result").html(data);
});
}

由於只是問了驗證和介紹緩衝問題,為了便於說明問題,故採用的校正方式是jquery封裝ajax接收伺服器端文本資料。
》》》同樣,別忘記了修改ajax.html中調用的方法,名稱改為上述指令碼中的verifyCache()
中文問題:
有兩種解決方式:
第一種:頁面端使用一次encodeURI,伺服器端用String name=new String(old.getBytes("iso8859-1"),"UTF-8");
中文1
複製代碼 代碼如下:

function verifychinese1{
var url="AJAXServer?name="+encodeURI($("#username").val());
url=convertURL(url); //緩衝
$.get(url,null,function(data){
$("#result").html(data);
});
》》》在verify.js中加入上述方法,同時把
String name=new String(old.getBytes("iso8859-1"),"UTF-8");

加入到AJAXServer.java類中的適當的位置。比如放在PrintWriter這句代碼後面就可以。
同樣,用第一種方式時,別忘記了修改ajax.html中調用的方法,名稱改為上述指令碼中的verifychinese1()
第二種:頁面端使用兩次encodeURI,伺服器端用String name= URLDecoder.decode(old,"UTF-8");
中文2
複製代碼 代碼如下:

function verifychinese2(){
var url="AJAXServer?name="+encodeURI(encodeURI($("#username").val()));
url=convertURL(url); //緩衝
$.get(url,null,function(data){
$("#result").html(data);
});
}
》》》在verify.js中加入上述方法,同時把
String name= URLDecoder.decode(old,"UTF-8");

加入到AJAXServer.java類中的適當的位置。比如放在PrintWriter這句代碼後面就可以。
同樣,用第二種方式時,別忘記了修改ajax.html中調用的方法,名稱改為上述指令碼中的verifychinese2()
需要源碼的可以留言。
通過幾天的學習,ajax的動態驗證基本有所瞭解,後續會根據情況增加相應的內容。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.