【问题标题】:$.ajax() call, only on updation$.ajax() 调用,仅在更新时调用
【发布时间】:2011-04-21 16:44:54
【问题描述】:

我正在使用 $.ajax() 请求读取 xml。

$.ajax({
    type: "GET",
    async: false,
    url: "../../../ErrorMessages.xml",
    dataType: "xml",
    success: function (xml) {
       $(xml).find("*[Name='" + Field + "']").each(function () {
          message = $(this).find(Rule).text();
       });
    }
});

我只想在资源 ErrorMessages.xml 更新时进行调用。否则使用浏览器缓存。

【问题讨论】:

    标签: javascript jquery ajax http caching


    【解决方案1】:

    创建一个名为“updateTimeStamp”的全局变量并将 updatetimestamp 放入 xml。然后在执行 ajax 请求时找到时间戳并将其与保存的 ipdateTimeStamp 进行比较。如果它更大,那么做你需要做的事情,如果不是什么也不做

    【讨论】:

      【解决方案2】:

      浏览器不知道ErrorMessages.xml 是否已在服务器上更新。它必须发出请求以检查文件是否已被修改。

      您可能希望在您的 jQuery $.ajax() 请求中将 ifModified 选项设置为 true,因为默认设置为 false

      $.ajax({
        type: "GET",
        ifModified: true,
        async: false,
        url: "../../../ErrorMessages.xml",
        dataType: "xml",
        success: function (xml) {
           // ..
        }
      });
      

      引用jQuery.ajax() documentation:

      ifModified(布尔值)

      默认:假

      仅当响应自上次请求后发生更改时才允许请求成功。这是通过检查 Last-Modified 标头来完成的。默认值为 false,忽略标题。在 jQuery 1.4 中,此技术还检查服务器指定的“etag”以捕获未修改的数据。

      只要您的网络服务器支持 Last-Modified 标头,那么对 XML 的第一个请求将如下所示:

      GET /ErrorMessages.xml HTTP/1.1
      Host: www.example.com
      
      HTTP/1.1 200 OK
      Last-Modified: Wed, 06 Oct 2010 08:20:58 GMT
      Content-Length: 1234
      

      但是,对同一资源的后续请求将如下所示:

      GET /ErrorMessages.xml HTTP/1.1
      Host: www.example.com
      If-Modified-Since: Wed, 06 Oct 2010 08:20:58 GMT
      
      HTTP/1.1 304 Not Modified
      

      如果网络服务器发现文件自 If-Modified-Since 标头日期以来已被修改,它将正常提供该文件。

      【讨论】:

        【解决方案3】:

        看这里:http://jquery14.com/day-01/jquery-14

        在 jQ 1.4 中启用了 Etag 支持,因此您可以使用它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-02
          • 2010-11-11
          • 1970-01-01
          • 2017-05-31
          相关资源
          最近更新 更多