Ajax 三个问题

(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;
 }
 代理服务器端:
 (1)拿到客户端的URL和参数信息
 (2)通过URL connect = new URL(url.toString());
  URLConnection connection = connect.openConnection();
  OutputStreamWriter paramout = new OutputStreamWriter(connection.getOutputStream());
    来访问远程服务器代码,最后在代理服务器端把处理数据通过流的形式发送到浏览器上去。

 

(3) Ajax 缓存问题
 在Ajax 中只要请求地址相同IE读取浏览器的缓冲信息没有和服务器进行交互。在请求地址上
 加上时间戳,骗过浏览器,使请求地址不一样,不读取缓冲。发送新的请求。
 var timestamp = new Date();
 if(url.indexOf("?")>=0){
  url=url+"&date"+timestamp ;
 } else {
  url= url+"?date"+timestamp;
 }
 这样保证浏览器每次请求都是不一样的。

你可能感兴趣的:(JavaScript,Ajax,浏览器,String,服务器,url)