//第四步:发送请求
xhr.send('username='+$F('uname'));
}
用GET还是POST?
与POST相比,GET更简单也更快,并且在大部分情况下都能用。然而,在以下情况中,请使用POST请求:
(1)无法使用缓存文件(更新服务器上的文件或)
(2)向服务器发送大量数据(POST没有数据量限制)
(3)发送包含未知字符的用户输入时,POST比GET更稳定也更可靠
ajax编程中的编码问题
(1)发送get请求:
ie浏览器内置的ajax对象,对中文参数使用gbk编码,而其它浏览器(firefox,chrome)使用utf8编码。
服务器端默认使用iso-8859-1去解码。
解决方案:
1)服务器对get请求中的参数使用指定的编码格式进行解码。
比如:对于tomcat,可修改conf/server.xml(添加URIEncoding="UTF-8")
即:告诉服务器,对于所有的get请求,使用utf-8进行编码/解码
2)对请求地址,使用encodeURI函数进行统一的编码(UTF-8)
该函数的作用:对请求地址中的中文进行“UTF-8”编码。
varuri='check_username.action?username='+$F{'username'};
varuri2=encodeURI(uri); //进行编码,欺骗浏览器,防止出现乱码
xhr.open('get',uri2,true);
总结:
解决get请求传递中文参数乱码问题:
(1)修改tomcat下的server.xml,在Connection后添加
URIEncoding="UTF-8",告诉服务器,对于get请求中的数据,使用UTF-8解码。$.ajax 参数数组
(2)在ajax在发送get请求前,添加:
varuri='check_uname.action?uname='+$F{'uname'};
xhr.open('get',encodeURI(uri),true);
用上面2步,可结果ajax中get请求参数中文乱码问题(对所以浏览器都适用).
(2)发送post
所有浏览器内置的ajax对象都会使用utf-8进行编码。
解决方案:
request.setCharacterEncoding("utf-8");
ajax应用中的缓存问题:
当使用IE浏览器时,如果使用get方式发请求,浏览器会将数据缓存起来。
这样,当再此发送请求时,如果请求地址不变,IE浏览器不会真正地向服务器发送请求,而是将之前缓存的数据显示给用户。
解决方式1:使用post方式发请求。
解决方式2:在请求地址后面添加一个随机数:
xhr.open('get','some?tt='+Math.random(),true);
5、发送同步请求
xhr.open('post','check_username.do',false);
AJAX $.toJSON的用法或把数组转换成json类型
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-61569-3.html
平生
嘴硬是没用的
那日本完全不能抵挡了