ajax-IE浏览器缓存和jQuery Form插件

前端之家收集整理的这篇文章主要介绍了ajax-IE浏览器缓存和jQuery Form插件 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

就像我面前有那么多迷失的灵魂一样,我在Ajax表单提交和IE浏览器缓存的蛇坑中挣扎.

我正在尝试使用jQuery表单插件Ajaxify wordpress注释编写一个简单的脚本.在Firefox,Chrome,Safari等中正常运行.等,但在IE中,响应文本被缓存,结果是Ajax输入了错误的注释.

    jQuery(this).ajaxSubmit({
        success: 
            function(data) {
                var response = $("<ol>"+data+"</ol>");
                response.find('.commentlist li:last').hide().appendTo(jQuery('.commentlist')).slideDown('slow');
            }           
        });

ajaxSubmit将评论发送到wp-comments-post.PHP,该文件优雅地将整个页面吐出来作为响应.因此,尽管它像蟾蜍一样丑陋,但我仍将响应文本粘贴在变量中,使用:last隔离最新注释,并将其向下滑动.

IE,但是,返回页面的缓存的版本,其中不包括新的注释.因此,“.commentlist li:last”选择了先前的注释,然后将其重复项毫无用处地滑到原始注释下方.

我已经尝试在ajaxSubmit选项中设置“ cache:false”,但是它没有任何效果.我尝试设置url选项并添加随机数或时间戳,但是最终它被附加到将评论提交到服务器的POST上,而不是返回返回响应的GET上,因此没有效果.我不确定还有什么尝试.如果我关闭浏览器缓存,则IE中的所有功能都可以正常运行,但是显然,我不能期望任何人浏览该页面.

任何帮助将不胜感激.提前致谢!

编辑进度报告:有人建议使用PHP标头来防止缓存,这确实有效.麻烦的是,当提交新评论时,wp-comments-post会分散整个页面,而我看到的添加标题的唯一方法是将它们放在wordpress帖子模板中,从而根本无法缓存所有帖子时代-完全不是我要寻找的行为.

有没有一种方法可以设置一个有条件的PHP(“ if is_ajax”或类似的东西),以防止在常规页面加载期间应用标头,但是如果该页面是由Ajax GET调用的,则可以将其插入?

最佳答案
jQuery.ajaxSubmit()接受标准jQuery.ajax()的任何选项.因此,您可以使用标准的cache:false选项关闭缓存:

jQuery(this).ajaxSubmit({
    cache: false,success: 
        function(data) {
            var response = $("<ol>"+data+"</ol>");
            response.find('.commentlist li:last').hide().appendTo(jQuery('.commentlist')).slideDown('slow');
        }           
    });

猜你在找的jQuery相关文章