欢迎来到天天文库
浏览记录
ID:13433250
大小:113.00 KB
页数:11页
时间:2018-07-22
《跟我学ajax技术——实现无刷新形式的数据查询的web应用示例(第三部分)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、杨教授工作室精心创作的优秀程序员职业提升必读系列资料1.1跟我学AJAX技术——实现无刷新形式的数据查询的Web应用示例(第三部分)1.1.1解决中文乱码的另一种实现方式修改webajax.js中的sendData方法请求方式为Post方式,并将请求参数放在send()方法中,模拟Web表单的post请求提交1、webajax.js中的代码如下varhttpRequest;functionsendData(){varcityNameInputValue=document.getElementById("cityNameInputID").v
2、alue;if((cityNameInputValue==null)
3、
4、(cityNameInputValue=="")){alert("您没有输入城市的名称!");return;}varrequestURL="/FirstAJAX/ajaxservlet";httpRequest=getHTTPRequestObject();httpRequest.onreadystatechange=processHttpResponse;httpRequest.open("POST",requestURL,true);httpRequest.setR
5、equestHeader("Content-Type","application/x-www-form-urlencoded");varqueryParameter="cityName="+cityNameInputValue;queryParameter=encodeURI(queryParameter);queryParameter=encodeURI(queryParameter);//两次,很关键httpRequest.send(queryParameter);}要应用escape(或encodeURI两个JavaScript中的其
6、中一个函数,功能基本相同),但要使用两次。补充资料:HTTP协议的编码规定11杨教授工作室,版权所有,盗版必究,11/11页杨教授工作室精心创作的优秀程序员职业提升必读系列资料在HTTP协议中,浏览器不能向服务器直接传递某些特殊字符,必须是这些字符进行URL编码后再进行传送。URL编码遵循的规则:将空格转换为(+)、对0-9,a-z,A-Z之间的字符保持不变。而对于所有其他的字符,用这个字符的当前字符集编码在内存中的十六进制格式表示,并在每个十六进制字节前加上一个百分号%。例如,字符“+”用%2B表示,字符“=”用%3D表示,字符“&”用%
7、26表示,字符“国”用%B9%FA表示注意,同一个中文字符在不同的字符集编码方式下,在内存中的编码值也是不同的,一个字符的URL编码是针对字符在内存中的码值而言的,采用不同编码的同一个字符的URL编码结果是不同的。2、AJAXServlet类中的doPost方法的代码publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{StringcityName=request.getParamet
8、er("cityName");cityName=java.net.URLDecoder.decode(cityName,"UTF-8");CreateXMLInterfacecreateXML=newCreateXMLBean();StringxmlFileContent=createXML.createXMLText(cityName);System.out.println("cityName="+cityName);response.setContentType("text/xml;charset=gb2312");response.s
9、etHeader("Cache-Control","no-cache");PrintWriterout=response.getWriter();out.write(xmlFileContent);//out.print(sb.toString());out.close();}当调用request.getParameter()函数时,会自动进行一次URI的解码过程,调用时内置的解码过程会导致乱码出现。而URI编码两次后,request.getParameter()函数得到的是原信息URI编码一次的内容。再用可控的解码函数java.net.U
10、RLDecoder.decode()就可解出原始的正确的信息。因此,如果将提交的数据使用javaScript的encodeURI()进行两次URL编码(不管是POST的数据还是G
此文档下载收益归作者所有