浏览器缓存具有不同数据类型的请求

时间:2013-01-25 16:30:59

标签: jquery json http caching

我正在尝试获取两个不同的资源,它们位于相同的URI中,但具有不同的数据类型。

$.ajax({
  dataType: "application/json",
  url: "http://www.myApp.com/resource",
  success: f
});

$.ajax({
  dataType: "text/html",
  url: "http://www.myApp.com/resource",
  success: f
});

但第二个电话永远不会离开浏览器。第一次调用的结果被缓存并返回到第二次调用。 但它有错误的数据类型! json vs html。 我不知道它是由jquery还是浏览器(chrome)缓存的?

有没有办法让这项工作?我需要资源的两种表示。 我可以在请求中将缓存设置为false,但之后我将失去缓存的好处。

或者我是否必须为不同的表示定义两个不同的资源URI?

1 个答案:

答案 0 :(得分:0)

在dataType中,将"application/json"替换为"json",将"text/html"替换为"html"jQuery recognizes仅将以下内容作为有效输入:

  • XML
  • JS​​ON
  • JS​​ONP
  • HTML
  • 文本
  • 脚本

或者以上的一些空格分隔的组合。任何其他值都会产生Accept标题为*/*的请求。

此外,您可能希望替换success回调,转而使用$.ajax({...}).done(callback)。回调参数在1.8中已弃用。