Ajax缓存和编码问题的最终解决方案

2016-02-19 22:30 3 1 收藏

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐Ajax缓存和编码问题的最终解决方案,希望大家看完后也有个好心情,快快行动吧!

【 tulaoshi.com - Web开发 】

ajax缓存和编码问题不难解决,下面是解决方法。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

编码问题

默认使用UTF-8,如果一旦发现对象找不到的情况,可能js中输入了中文,同时js的编码格式可能为gb2312,可用记事本打开js,另存为utf-8格式的文档。

通过XMLHttpRequest获取的数据,默认的字符编码是UTF-8,如果前端页面是GB2312或者其它编码,显示获取的数据就是乱码。通过XMLHTTPRequest,POST的数据也是UTF-8编码,如果后台是GB2312或者其他编码也会出现乱码。

Cache缓存问题

由于IE的缓存处理机制问题,每次通过XMLHttpRequest访问动态页面返回的总是首次访问的内容,解决方法有:

1. 客户端通过添加随机字符串解决。如:

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

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

HTTP:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

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");

3. 在XMLHttpRequest发送请求之前加上:

XMLHttpRequest.setRequestHeader("If-Modified-Since","0");
XMLHttpRequest.send(null);

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

延伸阅读
标签: Web开发
具体情况有: 一、本域和子域的相互访问: http://www.aa.com/和book.aa.com 二、本域和其他域的相互访问: http://www.aa.com/和http://www.bb.com/ 用 iframe 三、本域和其他域的相互访问: http://www.aa.com/和http://www.bb.com/ 用 XMLHttpRequest访问代理 四、本域和其他域的相互访问: http://www.aa.com/和http://www.bb.com/ 用 JS创建...
标签: Web开发
PHP中路径问题的解决方案引言: 关于PERL与PHP中的包含路径一直是一个比较难解的问题,主要是与操作系统和WEB服务器有关,不可能非常智能化的解决这个路径问题。相对于PERL,PHP的路径好得多,解决起来也容易得多,因为PHP的相对路径在PHP程序中的任何场合都可以使用,而不象PERL在某些语句中必须用绝对路径而导致移植的极其复杂。 基于此...
标签: Java JAVA基础
  这两天在win98下装apache1.3.9加jserv和gnujsp1.0,jdk1.2.2,jsdk2.0   发现中文无法正常显示。要么乱码,要么出错。   经网友提醒,总结了以下几条方法。   1:修改区域设置:在控制面版中选择区域设置,设为英语(美国)?nbsp;     然后重起。一切就都正常。   2:在j...
1、日间护理:白天,唇部和脸部肌肤一样,承受污染、干燥、日晒的压力,所以,唇部一样需要滋润、隔离以及防晒,以对抗外来压力的“迫害”!所以唇部护理产品得选择以质感轻薄、不粘腻并带有一定防晒指数为佳~ 2、晚间护理:夜间休息,身心放松,是唇部进行修复和加倍滋润的好时机,相较于日间,晚间润唇产品需要加倍补水保湿,需要有修护...
标签: Web开发
1. 错误提示 Warning: Cannot send session cookie - headers already sent Warning: Cannot send session cache limiter - headers already sent 分析及解决办法 这一类问题,的原因是你在程序中使用session_start()时,之前已经有实际的html内容输出了。或许你说,我没有啊,我只不过是echo或print一条消息了。很抱歉,你的echo或print...

经验教程

863

收藏

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