(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;
}
这样保证浏览器每次请求都是不一样的。
Ajax 三个问题
原创wx63086371c7e9c 博主文章分类:UI ©著作权
©著作权归作者所有:来自51CTO博客作者wx63086371c7e9c的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:成长过程-2007
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
区别 JavaScript 三个标签问题
最近写JavaScript代码遇到如下问题:代码如下:这三个标签有什么区别?虽然一直在用,不一样的。您可能
javascript 标签 safari chrome -
MySQL 三个经典的问题
今天给大家上3个经典的MySQL问题,希望能对大家有帮助!但是因为笔者计算机水平有限,可能会存在一些错误,烦请指出、
mysql 数据库 sql bc MySQL