【问题标题】:Ajax call seems to be cached in IE11, how to force this call every time?Ajax调用好像缓存在IE11里,怎么每次都强制这个调用?
【发布时间】:2018-06-20 16:13:58
【问题描述】:

我有一个 AJAX 调用,每次在 Mozilla 和 Chrome 中都会触发,但不是 IE11。想法表示赞赏。

function getOrders(customerId) {
  alert('Test1');
  $.ajax({
    type: "GET",
    url: '/Orders/GetOrders',
    data: ({ customerId: customerId}),
    dataType: 'html',
    success: window.updateTable
  });

  alert('test 2');
}

【问题讨论】:

  • 使用$.ajaxcache: false属性:api.jquery.com/jQuery.ajax
  • 或者只是添加未使用的随机数据。
  • 只是其他一些建议,不要使用alert() 进行调试。 console.log() 是更好的实践和准确的。此外,您提供给data 的对象也不需要括号
  • 谢谢大家。喜欢缓存:错误的想法。
  • 也感谢您提供有用的 JS 建议

标签: javascript jquery ajax internet-explorer


【解决方案1】:

如前所述,您可以将cache: false 参数提供给ajax 调用。

更通用的方法是使用cache-busting 技术。一种常见且简单的方法是将额外的数据附加到 URL。时间戳对此非常有效:

$.ajax({
  type: "GET",
  url: '/Orders/GetOrders',
  data: ({ customerId: customerId, cacheBust: Date.now() }),
  dataType: 'html',
  success: window.updateTable
});

这将创建一个这样的 URL:/Orders/GetOrders?customerId=123&cacheBust=123579285。好消息是每次调用的时间戳都会不同,所以它本质上是一个新资源,不会被缓存。

几乎在所有情况下,这种技术都可以用来避免浏览器缓存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多