Ajax的小贴士使用小结

在使用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 客户端通过添加随机字符串解决。如: 


代码如下:

var url = 'http://dancewithnet.com/';  
url += '?temp=' + new Date().getTime();  
url += '?temp=' + Math.random();

2 在HTTP headers禁止缓存。如:
HTTP: 


代码如下:

<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: 


代码如下:

header("Expires: Thu, 01 Jan 1970 00:00:01 GMT");  
header("Cache-Control: no-cache, must-revalidate");  
header("Pragma: no-cache");

ASP: 


代码如下:

Response.expires=0  
Response.addHeader("pragma","no-cache")  
Response.addHeader("Cache-Control","no-cache, must-revalidate")

JSP: 


代码如下:

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非常好的替代品。

(0)

相关推荐

  • Ajax的小贴士使用小结

    在使用Ajax过程中,有时候总会遇到一些难题,浏览器兼容.编码.IE下的特殊处理等等,偶尔会搞的人头昏脑胀哭笑不得,这里列一些小贴士,或许有些用. 使用Javascript库         Ajax的流行和巨大威力,让我们重新审视了Javascript的开发,也直接促使各种库的出现.对于普通的开发者,使用一些适合自己的Javascript库不仅可以避免Ajax应用上的浏览器兼容等问题,也使其开发更加的稳定和高效.这里列一些我知晓的轻量级的Javascript库:  1 YUI:YAHOO出品,

  • 使用CDN的优势以及小贴士分享

    什么文件适合用CDN加载 CDN主要适用于一些静态资源文件的加载,比如javascript文件.css样式文件.字体.图片.视频等其他资源文件.这些文件我们往往放到自己的一些前端服务器中做处理(nginx),使用CDN就可以免除前端服务器部分工作了. 使用CDN的好处 提升网站的性能 使用CDN最大的益处是为你的服务器提供"分流",节省了你的带宽,减少了服务器的压力,很多CDN厂商提供的资源访问服务加载速度还是比较快的(墙内除外). 文件缓存 对于那些被普遍使用的资源文件(比如jque

  • 每个程序员需掌握的20个代码命名小贴士

    代码中到处都需要命名.作为程序员,我们得给类命名,给变量命名,给函数命名,给参数命名,给命名空间命名,等等等等.下面有20条小贴士能帮助你提高你的命名能力. 1.使用能够表达意图的名字 名字得能告诉我们它要做什么,为什么存在,以及是如何工作的.选择能够表达意图的名字,将更有利于我们理解代码. int d; // elapsed time in days int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification;

  • 分享Python开发中要注意的十个小贴士

    大家请注意:这篇文中假设我们都用的是Python 3 1. 列表推导式 你有一个list:bag = [1, 2, 3, 4, 5] 现在你想让所有元素翻倍,让它看起来是这个样子: [2, 4, 6, 8, 10] 大多初学者,根据之前语言的经验会大概这样来做 bag = [1, 2, 3, 4, 5] for i in range(len(bag)): bag[i] = bag[i] * 2 但是有更好的方法: bag = [elem * 2 for elem in bag] 很简洁对不对?这

  • js 小贴士一星期合集

    1.今天聊聊自定义事件 事件大家都知道,但在很多的框架中都有自定义事件的实现,我写了个简单的,跟大家分享一下, 复制代码 代码如下: <script> var cusEvent = function(){ var cache = {}; return { addEvent:function(type,fn){ cache[type]?cache[type].push(fn):(cache[type]=[fn]); }, removeEvent:function(type,fn){ if(cac

  • 人尽可用的Windows小贴士之上篇第1/2页

    不管你是否已经升级到最新版Vista系统还是继续留守在XP阵营,我们列出的这些小贴士都能够帮助您加快电脑的处理速度.提升电脑的安全性能,甚至还能够改善电脑的时尚可观性,相信我吧! 客观说来,Windows操作系统的性能可谓一般,如果你不尽力去深度"挖掘",或者按照你的意愿去改变它,那么就永远无法让其发挥出真正的潜力. 无论你是想提高XP的运行速度.自定义Vista的Aero界面.管理自己的磁盘分区或进行快速照片处理,以下我们给出的案例都能悉数告诉你具体的实现方法,在文章中,我们首先会介

  • 人尽可用的Windows技巧小贴士之下篇

    寻找Windwos Media Player 如果你有大量的多媒体文件,想要寻找到某一特定文件可能并非易事.Windows Media Player 11可以让用户通过搜索唱片音轨.艺术家或其它标准轻松找到目标文件.例如,要查询Bob Dylan的"Like a Rolling Stone",在搜索框中输入"Title:Rolling Stone"便会得到与该名称相似的搜索结果列表. 捕捉屏幕 Vista的捕获工具能够让抓捕全部或部分屏幕图片及添加注释变的易如反掌,

  • jquery ajax 请求小技巧实例分析

    本文实例讲述了jquery ajax 请求小技巧.分享给大家供大家参考,具体如下: jquery   是一个非常好用的js框架,它为我们提供了很多工具.启动异步请求就是很好用的一个工具 官方推荐的ajax 请求格式 $.ajax({ url:"http://xxxxxxxxxxxxxxxxx/",//你的域名 dataType:"json", //对服务器返回的结果进行该数据格式处理 我这里写了json 也可以红xml.text.html 等格式 type:&quo

  • Python开发的十个小贴士和技巧及长常犯错误

    下面是十个Python中很有用的贴士和技巧.其中一些是初学这门语言常常会犯的错误. 注意:假设我们都用的是Python 3 1. 列表推导式 你有一个list:bag = [1, 2, 3, 4, 5] 现在你想让所有元素翻倍,让它看起来是这个样子:[2, 4, 6, 8, 10] 大多初学者,根据之前语言的经验会大概这样来做 bag = [1, 2, 3, 4, 5] for i in range(len(bag)): bag[i] = bag[i] * 2 但是有更好的方法: bag = [

  • Ajax 的六个误区小结分析

    就像以前流行过的闪烁字体."溅水"页(译者:Splash page -Flash动画或大图片做的网站的简介首页,往往有个"跳过简介"或"直接进入"的小按钮).和使用圆角(译者:见YeeYan首页抬头,呵呵),只是这次动态性更强? 让我们看看有关Ajax的几个误区,拨开迷雾.发掘真相. 误区一:AJAX 是Asynchronous JavaScript and XML 的缩写.你写这个词时,应该用大写字母拼写,要不就显得很无知. 事实上,根据 Aj

随机推荐