Ajax:为什么当我删除脚本时ajax会继续运行

时间:2017-02-12 07:11:05

标签: javascript jquery ajax

所以我已经使用ajax下载了关于实时搜索的源代码。 所以它的文件为custom.jssearch.htmlsearch.php

所以我一直在尝试修改它以满足我的需求,但是当我尝试编辑或删除custom.js里面的所有代码,其中ajax脚本并保存并刷新浏览器时,它仍然运行我没有编辑或删除ajax脚本。 iv尝试关闭浏览器并再次尝试,它一直在运行,就像他们没有编辑一样。

为什么会这样的事情继续发生?我无法修改custom.js因为我不知道我的编辑是否有效。

这里是custom.js

中的代码

/ * JS File * /

// Start Ready
$(document).ready(function() {  

    // Icon Click Focus
    $('div.icon').click(function(){
        $('input#search').focus();
    });

    // Live Search
    // On Search Submit and Get Results
    function search() {
        var query_value = $('input#search').val();
        $('b#search-string').text(query_value);
        if(query_value !== ''){
            $.ajax({
                type: "POST",
                url: "search.php",
                data: { query: query_value },
                cache: false,
                success: function(html){
                    $("#result-here").html(html);
                }
            });
        }return false;    
    }

    $("input#search").live("keyup", function(e) {
        // Set Timeout
        clearTimeout($.data(this, 'timer'));

        // Set Search String
        var search_string = $(this).val();

        // Do Search
        if (search_string == '') {
            $("ul#results").fadeOut();
            $('h4#results-text').fadeOut();
        }else{
            $("ul#results").fadeIn();
            $('h4#results-text').fadeIn();
            $(this).data('timer', setTimeout(search, 100));
        };
    });

});

3 个答案:

答案 0 :(得分:1)

这是缓存问题。 打开检查员并检查"禁用缓存"

Screenshot 此选项仅在打开检查器时有效,因此在调试时保持打开

答案 1 :(得分:1)

问题是浏览器每次都检测到调用相同的custom.js文件。

在你调用custom.js文件的search.php文件中,只需将每个页面加载时更改你的custom.js加载一些动态版本。

喜欢这个

From: <script src="custom.js"></script> 
To  : <script src="custom.js?v="<?php echo rand(0,9); ?>></script>

这肯定会解决您的问题。

答案 2 :(得分:1)

所以,因为它实际上是答案,我也会在这里发布我的评论版本:

实际上,这应该是一个缓存问题。所以

首先:你使用哪种浏览器?

然后:一种可能的解决方案是禁用浏览器缓存。您是否尝试通过浏览器的开发人员工具(例如chrome:f12 / cmd + alt + i - &gt; network-tab - &gt;禁用缓存)禁用缓存?

(如上面的答案,斜体 - 文本只是留给不能让它工作的人的建议):

或者您是否尝试按strg +f5 / cmd + shift + r而不是仅尝试正常重新加载?

或者我是否理解正确,您是否正在尝试直接在浏览器devtools中更改js?

所以,有可能它与你的代码有关,但要知道发生了什么,我们必须在编辑后看到“旧”代码和“新”代码。

...除此之外,Sagar Arora在他/她的答案中建议的是一种称为缓存安全令牌的东西,这肯定会让你解决问题,因为对于每个请求,你不仅会加载'custom.js',然后被缓存,但是'custom.js?v = x',其中x是缓存安全令牌(应该长于1到10,但是;)