$ .ajax()调用,仅在更新时调用

我正在使用$ .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时才进行调用。 否则使用浏览器缓存。

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

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

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

引用jQuery.ajax()文档 :

ifModified(布尔)

默认值:false

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

只要您的Web服务器支持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 

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

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

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

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