Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

jQuery Ajax的时间戳问题

  jQuery对Ajax封装的很严重,以至于我们都搞不清自己给服务器发送了什么东西。时间戳就是jQuery擅自给请求URL加上的参数,目的是防止缓存。但是这样擅自给URL加东西当然不行,有时候服务器只接受干净的URL,这是就要自己关闭jQuery自动加时间戳的功能。
  其实jQuery给URL加时间戳并不是什么大不了的事情,普通的请求都是允许加入自定义参数的。只有在服务器使用“QUERY_STRING”来获取参数时,才会导致参数不正确。百度统计的代码就是这样,它是不允许添加其它参数的。所以直接调用“$.getScript”来加载百度统计的代码就会抛出MIME不对的警告,而且返回的数据也是空的。
$.getScript("http://hm.baidu.com/h.js?a855f89c898f1b86f43caea384f74651");
  加时间戳的目的在于对这URL不缓存,我们只要设置允许缓存就可以让它不用时间戳。于是换成“$.ajax”,并且带上相应的参数来加载就可以正常加载到了。 $.ajax({
  url:"http://hm.baidu.com/h.js?a855f89c898f1b86f43caea384f74651",
  dataType:"script",cache:true
});

  另外,“$.getScript”这个方法是受“$.ajaxSetup”影响的。如果整个网站中的其它Ajax请求的缓存是由自己服务器返回的HTTP头来管理的,那就可以直接开启全局的Ajax缓存。这样直接“$.getScript”时也不会再添加时间戳了。 $.ajaxSetup({cache:true});
//...
  不过一定要记住这个方法的前提是其它Ajax请求的缓存自己要把握住。如果不能把握就千万别用这个方法,设置全局的东西总是很危险的。
网名:
54.196.182.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^