Jquery - 如何发出 ifModified :true work in . ajax 请求?

标签 jquery ajax

我有一个简单的脚本,其中每 2 秒发出一次 Ajax 请求。如果从名为“ext”的 php 页面获取的数据与上次获取的数据不同,则代码将运行一个函数:为了执行此操作,我在 ajax 请求上使用 ifModified:true 设置,但它不起作用。

这是我正在使用的代码

$(document).ready(function(){

setInterval(repeat,2000);

function repeat(){
$.ajax({
  type: "GET",
  url: "ext.php",
  ifModified: true,
  success:function(data) {
$('.photo').fadeOut(5000).delay(1000).css('background-image', 'url(' + data + ')' ).fadeIn(5000);
}
});
}

});

这是在“ext.php”中找到的代码:其目的是将最后添加的 jpg 的路径简单地输出到目录中。

<?php
$array = glob("images/{*.jpg,*.JPG}", GLOB_BRACE);
$ultimo = end($array);
?>
<?php echo $ultimo; ?>

目前,脚本设置一个图像(其路径可在 ext.php 中找到)作为类“.photo”的 div 的背景,并带有 fadeOut 和 fadeIn。我的想法是,当路径与之前使用的路径相同时,图像不应重复淡出和淡入,而应保持静止,直到提供新路径。

我错过了什么?

最佳答案

当 Ajax 请求成功完成时,success使用 3 个参数调用回调:

  1. data返回的数据
  2. status文本状态字符串,值为 "success"
  3. jqXHR返回的 jQuery XMLHttpRequest 对象(此参数与此问题无关,因此我省略了更多信息。了解更多 here )

当您设置属性 ifModified: true 时在 Ajax 请求上,在同一 URL 上使用相同数据的第二个请求之后 success使用 3 个参数调用回调:

  1. data返回的数据值为 undefined
  2. status文本状态字符串,值为 "notmodified"
  3. jqXHR返回的 jQuery XMLHttpRequest 对象(此参数与此问题无关,因此我省略了更多信息。了解更多 here )

在成功回调中,您必须检查 status值如果 status === "success"如果状态等于"notmodified",则继续你什么都不做。

    success: function(data, status) {
        if (status === "success") {
            // New data received, do what you want
        } else {
            // if not modified data is undefined 
        }
    }

奖励:如果status === "notmodified",您可以从缓存中获取旧数据通过jqXHR.responseText 。如果您dataType不是文本(即JSON、JSONP、脚本等),必须先转换字符串jqXHR.responseText到您想要的数据类型。

关于Jquery - 如何发出 ifModified :true work in . ajax 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18227178/

相关文章:

jquery - 使用 JQuery 单击警报后获取回调函数以触发

javascript - 在 JSP 中模态提交后处理表单

javascript - 如何将MVC模型与ajax调用绑定(bind)?

php - extjs 4 : only display the tree panel node by the specific id

javascript - 为什么 AJAX 调用会被忽略?

javascript - Jquery Mobile 与其他 javascript 冲突

javascript - JQuery如何点击html元素复制到文本区域?

jquery - 加载时 CSS、Javascript 或 jQuery 闪烁元素

javascript - 在哪里捕获 EVAL 中抛出的异常

php - 使用 AJAX 排序的 jQuery 只能每隔一段时间工作