Ajax的小贴士使用小结

2016-02-19 11:26 1 1 收藏

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐Ajax的小贴士使用小结,赶紧看过来吧!

【 tulaoshi.com - Web开发 】

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

来源:https://www.tulaoshi.com/n/20160219/1597542.html

延伸阅读
标签: Web开发
请求方式,分为GET与POST: GET 最为常见的HTTP请求,普通上网浏览页面就是GET。GET方式的参数请求直接跟在URL后,以问号开始。(JS中用window.location.search获得)。参数可以用encodeURIComponent进行编码,使用方式: var EnParam = encodeURIComponent(param); URL只支持大约2K的长度,即2048字符数;使用GET进行AJAX请求时候会缓存导...
标签: Web开发
/// summary /// author飞鹰@ASPCool.com /author /// description本文介绍在.NET中查找XML节点的方法。 /desciption /// copyrightASP酷技术资讯网(www.ASPCool.com) /copyright /// /summary 大家在.NET中处理XML文档的时候,经常会需要找到文档中的某个节点的数据。要找到某个节点,有许多种方法,在这里我就把几...
尽管从技术上讲,其它排名函数的计算与ROW_NUMBER类似,但它们的的实际应用却少很多。RANK和DENSE——RANK主要用于排名和积分。NTILE更多地用于分析。 先创建一个示例表: 代码如下: SET NOCOUNT ON USE [tempdb] IF OBJECT_ID('Sales')IS NOT NULL DROP TABLE sales CREATE TABLE Sales ( empid VARCHAR(10) NOT NULL PRIMARY KEY...
标签: Web开发
1。文本框的改变事件,可使用propertychange,例如: 代码如下: $("#txtDataDate").bind("propertychange",function(){ }); 2。获取被选中RadioButton 的值 代码如下: var radio_value = $("input[type=radio][checked]").val(); 3。下拉列表的改变事件,以及获得选中选项的值 代码如下: $("#下拉列表").change(functio...
标签: Web开发
之前在常规页面下 为了实现注册一段js脚本 以实现弹出一个消息提示框 通常可以这样做 string strJS = "script type='text/javascript' language='javascript' "; strJS = "alert('');"; strJS += "/script"; VS2003下 Page.RegisterClientScriptBlock("ajs", strJS); VS20...

经验教程

482

收藏

47
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部