Javascript 清除缓存后JQuery不工作

Javascript 清除缓存后JQuery不工作,javascript,jquery,Javascript,Jquery,在我按住ctrl键单击f5(刷新并清除chrome中的缓存)后,JQuery不工作。但奇怪的是,当我在代码顶部添加一条alert语句时,这个问题就消失了。 我的jquery是一个本地文件。这是怎么回事 而且,我所有的代码都在 <script type="text/javascript" src="javascript/jquery-3.1.1.min.js"></script> <script type="text/javascript" src="java

在我按住ctrl键单击f5(刷新并清除chrome中的缓存)后,JQuery不工作。但奇怪的是,当我在代码顶部添加一条alert语句时,这个问题就消失了。
我的jquery是一个本地文件。这是怎么回事

而且,我所有的代码都在

    <script type="text/javascript" src="javascript/jquery-3.1.1.min.js"></script>
<script type="text/javascript" src="javascript/main.js"></script>

<script type="text/javascript">

    var json_screenSizes;

    <!-- The function loadJSON is located in main.js (loaded above) -->
    loadJSON("json/screenSizes.json", function (response) {
        // Parse JSON string into object
        json_screenSizes = JSON.parse(response);
    });

    alert('read'); <!-- This causes code below to work on cache refresh */

    /* DOCUMENT READY */
    $(function () {

        var xhr;

        <!-- This on keyup code never calls on cache clearing but does on normal refresh -->
        $(".search_dreams form input[type=search]").on("keyup", function () {
            if (xhr && xhr.readyState != 4) {
                xhr.abort();
            }
            if ($(".search_dreams form input").val().length < 3) { /* If search input is empty */
                $(".search_dreams .results ul").html("");
                $(".search_dreams .results").hide();
                $(".search_dreams input.search").removeClass("orange");
                return;
            }
            xhr = $.ajax({
                type: 'GET',
                url: 'searchDreams.php',
                data: {numResults: 10, keyword: $(".search_dreams form input").val()},
                success: function (data) {
                    data = JSON.parse(data);
                    var output = "";
                    alert("succes");

                    /* ADD DREAM */
                    for (var i in data) {
                        output += "<li class='addDream'>";
                        /* Dream Name */
                        output += "<div class='dream_name'><a href='google.com'>" + data[i].dreamName + "</a></div>";
                        output += "<div class='button_container'><input class='addDream small orange' type='submit' value='Add Dream'></div>";
                        /* Add dream button */
                        output += "</li>";
                    }

                    $(".search_dreams input.search").addClass("orange");

                    $(".search_dreams .results").show();
                    $(".search_dreams .results ul").html(output);

                }

            });
        });


    });
</script>

屏幕大小;
loadJSON(“json/screenSizes.json”,函数(响应){
//将JSON字符串解析为对象
json_screenSizes=json.parse(响应);
});
警报(“读取”);
$(“.search\u表单输入[type=search]”)。在(“keyup”上,函数(){
if(xhr&&xhr.readyState!=4){
xhr.abort();
}
如果($(“.search\u表单输入”).val().length<3){/*如果搜索输入为空*/
$(“.search_dreams.results ul”).html(“”);
$(“.search_dreams.results”).hide();
$(“.search\u dreams input.search”).removeClass(“橙色”);
返回;
}
xhr=$.ajax({
键入:“GET”,
url:'searchDreams.php',
数据:{numResults:10,关键字:$(“.search_dreams form input”).val()},
成功:功能(数据){
data=JSON.parse(数据);
var输出=”;
警惕(“成功”);
/*添加梦想*/
用于(数据中的var i){
输出+=“
  • ”; /*梦名*/ 输出+=“”; 输出+=“”; /*添加梦想按钮*/ 输出+=“
  • ”; } $(“.search\u dreams input.search”).addClass(“橙色”); $(“.search_dreams.results”).show(); $(“.search_dreams.results ul”).html(输出); } }); }); });

    除了我提到的警告声明之外

    当您需要对尚未加载的资源(如图像)执行某些操作时,通常会发生这种情况。按F5将重新加载页面中的所有资源,而正常导航不会

    尝试替换
    $(function(){})使用以下选项之一调用:

    $(window).load(function() {});
    


    这可能是因为代码是在jQuery加载之前执行的。我想这个警报会给浏览器足够的时间来检索jQuery。
    您可以查看“网络”选项卡,查看jquery是否在代码执行之前加载,如果不是这样,则当页面缓存刷新时,必须再次加载json文件。我试图在加载JSON变量之前使用它

    控制台中有错误吗?听起来你有一个不同步的问题。。。。需要更多代码按f5似乎不清楚cache@RaniMorelesRubillos它没有清除缓存,但我认为它绕过了该加载的缓存。@Satpal我的错,这是堆栈上的o型溢出,代码在我的网站上没有显示。我更新了问题。如果代码是在jquery加载之前执行的,那么这没有帮助。他说他的所有代码都在ready()块中,所以他应该可以,除非他在异步模式下加载jquery或稍后在文件中加载jquery。让我们看看他是怎么说的……替换$(function(){});使用这两种方法中的任何一种都会导致代码根本无法工作,即使在不重新加载缓存时也是如此。我将在上面发布代码我不太确定,我认为$(函数)可以解决这个问题。看看更新后的代码。@OzgurBar对罪犯有什么想法吗?@JDoe实际上我想知道是否真的没有人打电话。您是否尝试过类似的操作->
    $(“.search\u dreams form input[type=search]”。在(“keyup”上,函数(){alert(“entered”);//代码的其余部分}
    @OzgurBar是的,没有生成,我测试了它。正如我前面所说的,它是正常调用的,但是当页面缓存被清除时,它不是。但是如果我有alert语句,那么它会在页面缓存重新加载时被调用。我的jquery代码似乎都不起作用。包括$(window)。on('resize',function(){});
    $(document).on("pageinit", function () {});