http://www.jb51.net/article/12611.htm
在使用Ajax过程中,有时候总会遇到一些难题,浏览器兼容、编码、IE下的特殊处理等等,偶尔会搞的人头昏脑胀哭笑不得,这里列一些小贴士,或许有些用。
使用Javascript库
Ajax
的流行和巨大威力,让我们重新审视了Javascript的开发,也直接促使各种库的出现。对于普通的开发者,使用一些适合自己的Javascript库
不仅可以避免Ajax应用上的浏览器兼容等问题,也使其开发更加的稳定和高效。这里列一些我知晓的轻量级的Javascript库:
1 YUI:YAHOO出品,组件丰富强大健壮稳定,是团队协作开发的首选。
2 JQuery:灵活、高效,其基于CSS3 和XPath的选择器语法引擎非常的强大和完整。
3 Prototype:是一个非常优雅的Javascript库,最经典的莫过于$符号了,DWR,JQuery都被它吸引了。在它基础上出现了script.aculo.us。
4 Mootools:核心语法和Prototype比较类似,但是用过之后才知道什么叫简单轻巧和短小精悍。
编码问题
通过XMLHttpRequest获取的数据,默认的字符编码是UTF-8,如果前端页面是GB2312或者其它编码,显示获取的数据就是乱码。通过
XMLHTTPRequest,POST的数据也是UTF-8编码,如果后台是GB2312或者其他编码也会出现乱码。解决方法:
1 统一到UTF-8。这也是国际化的必然趋势。
2 输出通过XMLHttpRequest获取的文本文本时,在headers中增加文本声明(直接HTML声明没有作用)。如:
PHP:header('Content-Type:text/html;charset=GB2312');
ASP:Response.Charset = "GB2312"
JSP:response.setHeader("Charset","GB2312");
3 WWW
服务器上强制声明。比如:apache下的配置:
AddDefaultCharset GB2312
这种情况主要是应对通过XMLHttpRequest访问的文件是静态文件,无法声明headers的情况下。
静
态页面一般都会经过Apache的deflate或gzip压缩,此时在上面情况下IE中,首次通过XMLhttpRequest获得的数据可以正常显
示,但再获取数据显示时出现乱码,这次因为再次获取的数据来自缓存,可能由于浏览器解压缩的问题导致Apache设置的默认编码声明丢失。由于这种情况下
一般是纯文本,可能还无法禁止缓存,可以设置XMLhttpRequest访问的文本文件不压缩来解决这个问题。
4 非UTF-8页面通过XMLHttpRequest获取的文本文本输出前字符转码成unicode,或者编码直接是UTF-8,可以正常显示。如实例所示。
IE下的缓存问题
由于IE的缓存处理机制问题,每次通过XMLHttpRequest访问动态页面返回的总是首次访问的内容,解决方法有:
1 客户端通过添加随机字符串解决。如: CODE:
var url = 'http://dancewithnet.com/';
url += '?temp=' + new Date().getTime();
url += '?temp=' + Math.random();
2 在HTTP headers禁止缓存。如:
HTTP:
CODE:
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
<meta http-equiv="expires" content="Thu, 01 Jan 1970 00:00:01 GMT" />
<meta http-equiv="expires" content="0" />
PHP:
CODE:
header("Expires: Thu, 01 Jan 1970 00:00:01 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
ASP:
CODE:
Response.expires=0
Response.addHeader("pragma","no-cache")
Response.addHeader("Cache-Control","no-cache, must-revalidate")
JSP:
CODE:
response.addHeader("Cache-Control", "no-cache");
response.addHeader("Expires", "Thu, 01 Jan 1970 00:00:01 GMT");
IE下的reponseXML问题
使用responseXML时,IE下只能接受.xml为后缀的XML文件,如果不能以.xml文件为结尾的,则需要如下处理:
1 在
服务器端声明是xml文件类型。如:
PHP:header("Content-Type:text/xml;charset=utf-8");
ASP:Response.ContentType = "text/xml";
JSP:response.setHeader("ContentType","text/xml");
2 利用responseText获取,然后封装成XML。
3 在AJAX应用上,JSON和JsonML是XML非常好的替代品。
分享到:
相关推荐
**Ajax小结** Ajax,全称Asynchronous JavaScript and XML(异步JavaScript和XML),是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,...
使用Ajax实现从服务器读取数据,包括Ajax实现的详细步骤
对于初学者来说,这个小程序提供了一个很好的实践机会,可以学习到如何将前端的交互与后端的数据处理相结合,理解Ajax的工作流程,以及如何使用JavaScript操作DOM,实现动态更新页面的效果。同时,也可以锻炼CSS的...
**AJAX 技术总结与设计模式** AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,提升了用户体验。...
总结,Ajax技术通过组合各种Web技术,极大地提升了网页的交互性和用户体验,但在使用时需要根据具体场景选择合适的应用,避免造成不必要的困扰。同时,XML作为数据交换的载体,与Ajax配合,共同推动了Web应用程序的...
ajax自我总结 ajax自我总结 ajax自我总结 ajax自我总结
ASP.NET Ajax组成部分以及它的一些控件的简单的使用
**AjaxRequest(Ajax使用包)** Ajax,全称Asynchronous JavaScript and XML(异步JavaScript和XML),是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。AjaxRequest是实现Ajax功能的一个工具包,它...
**AJAX电子书总结** AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。这种技术的出现极大地提升了用户体验,因为它允许后台与服务器进行数据交换,而用户界面...
在过去的这一年里,作为一名专注于使用Ajax技术的开发者,我积累了丰富的经验,并且在这个过程中对Ajax、JSP、Servlet以及Struts等技术有了更深入的理解。现在,我想分享一下我在Ajax开发项目中的心得与体会,希望对...
`myajax`函数是封装的Ajax方法,它使用jQuery的`$.ajax`方法。`type`参数设置为`'post'`,表示使用POST方式发送数据。`url`是请求的目标页面,即`ajax.aspx`。`data`字段传入`jsonData()`函数的返回值,这个函数返回...
本文将深入讲解AJAX的基本原理、使用方法以及与XML的联合应用。 一、AJAX基本原理 AJAX的核心是JavaScript对象XMLHttpRequest,它允许在后台与服务器进行通信,而不会中断用户的交互。通过创建XMLHttpRequest对象...
3. **破坏回退功能**:由于Ajax请求不会改变浏览器的URL,用户无法使用浏览器的前进/后退按钮。 4. **安全风险**:Ajax请求可能暴露敏感信息,增加XSS(跨站脚本攻击)和CSRF(跨站请求伪造)的风险。 **Ajax的应用...
**Ajax异步请求小结** Ajax(Asynchronous JavaScript and XML)是一种用于创建快速、动态网页的技术,它允许在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。这种技术极大地提升了用户体验,...
总结来说,这个实验涵盖了MVC架构下JSP和Servlet的使用,以及如何通过AJAX和jQuery优化用户体验。通过实践,学生能够更好地理解Web应用的开发流程,掌握Java后端服务的编写,以及前端与后端的交互方式,同时体验到...
很不错的Ajax开发草考文档,方便快捷1. AJAX介绍AJAX是一种运用JavaScript和可扩展标记语言(XML),在网络浏览器和服务器之间传送或接受...5. 使用AJAX制作留言本使用已有的AJAX教程,制作一个属于自己的留言本吧....
2. **Ajax请求**:使用`$.ajax()`函数发送POST请求至`DistrictAction`,请求数据类型设置为`json`。在成功回调函数中,使用`eval()`将返回的字符串转换为JSON对象,然后遍历对象中的`disList`属性,动态生成下拉选项...