Ajax 三個問題__Ajax

來源:互聯網
上載者:User

(1) Ajax 中文問題
 中文在做為參數傳遞的過程中是以UTF-8的方式對漢字進行編碼。
 var url = encodeURI(url);注意:IE中兩次encodeURI
 比如"中"這個漢字,會以%E4%B8%AD傳送。
   在伺服器端,取到參數以後。必須要解密
   String old = request.getParameter("name");
 則在伺服器端這樣解碼
 String name = URLDecoder.decode(old,"UTF-8");

 

(2) Ajax 跨域問題
 同域:如果HTML代碼和伺服器代碼在同一個伺服器上就叫同域。
 跨域:如果HTML代碼和伺服器代碼不在同一個伺服器上就叫跨域。
 跨域問題,Javascript出於安全性考慮,是不允許跨域調用其他頁面的對象的。
 通過iframe 實現安全性極差,容易導致中病毒和木馬。
 讓頁面端程式先訪問同網域服務器端的代理程式,通過代理程式和遠端伺服器上的
 程式互動。因為代理程式是用java寫的,所有可以訪問任何遠程伺服器上的程式。
 用戶端:
 function converURL(url){
  if(url.substring(0,7)=="http://"){
   url.replace("?","&");
   url="Proxy?url"+url
  }
  return url;
 }
 Proxy 伺服器端:
 (1)拿到用戶端的URL和參數資訊
 (2)通過URL connect = new URL(url.toString());
  URLConnection connection = connect.openConnection();
  OutputStreamWriter paramout = new OutputStreamWriter(connection.getOutputStream());
    來訪問遠程伺服器代碼,最後在Proxy 伺服器端把處理資料通過流的形式發送到瀏覽器上去。

 

(3) Ajax 緩衝問題
 在Ajax 中只要請求地址相同IE讀取瀏覽器的緩衝資訊沒有和伺服器進行互動。在請求地址上
 加上時間戳記,騙過瀏覽器,使請求地址不一樣,不讀取緩衝。發送新的請求。
 var timestamp = new Date();
 if(url.indexOf("?")>=0){
  url=url+"&date"+timestamp ;
 } else {
  url= url+"?date"+timestamp;
 }
 這樣保證瀏覽器每次請求都是不一樣的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.