Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery chrome中的同步ajax调用期间加载程序不工作_Jquery_Ajax_Google Chrome_Loading_Synchronous - Fatal编程技术网

Jquery chrome中的同步ajax调用期间加载程序不工作

Jquery chrome中的同步ajax调用期间加载程序不工作,jquery,ajax,google-chrome,loading,synchronous,Jquery,Ajax,Google Chrome,Loading,Synchronous,加载程序在google chrome中的同步(异步:false)ajax调用期间不工作。在Firefox和IE中运行良好。在调试测试期间,加载程序一直显示,直到ajax请求启动。当请求发送到服务器时,被删除或消失,我在服务器上保留了一个调试点。我尝试过其他解决方案,如使用ajaxStart、beforeSend和ajax loader等,但没有用。请给出有效的解决方案 <div id="LoaderDiv" style="display: none"> <img id

加载程序在google chrome中的同步(异步:false)ajax调用期间不工作。在Firefox和IE中运行良好。在调试测试期间,加载程序一直显示,直到ajax请求启动。当请求发送到服务器时,被删除或消失,我在服务器上保留了一个调试点。我尝试过其他解决方案,如使用ajaxStart、beforeSend和ajax loader等,但没有用。请给出有效的解决方案

 <div id="LoaderDiv" style="display: none">
    <img id="ImageLoader" src="Images/loading.gif" />
 </div>

我在谷歌chrome上试用过,它正在工作。如果您在问题上遗漏了一些代码,可能会检查您是否有任何其他错误,或者尝试发布更多代码

检查你的代码,它正在工作

我只在您的代码中添加了以下内容:

error: function(data){
                       $('#LoaderDiv').hide(); 
               }


但是请注意,我添加了错误处理函数,因为如果没有它,当错误发生时,图像(您的gif)将永远显示。(如果您从服务器收到任何错误响应,那么这将是一个解决方案)

我也面临着与去年相同的问题,即使使用async:false。终于找到了一个最好的解决方案,但不确定它是否能在你的情况下起作用,它对我起了101%的作用

代码如下:-

    $.ajax({ 
                .. , 
             beforeSend: function () { showLoader(); },

             success: function (data) { hideLoader(); } 
    });


function showLoader() {
    $("#progressbar").css("display", "");
}

function hideLoader() {
    setTimeout(function () {
        $("#progressbar").css("display", "none");
    }, 1000);
}
您可以使这两个函数在任何通用javascript文件中通用。因此,您可以在多个位置或js文件中调用这些函数

Html是:

<div class="spinnermodal" id="progressbar" style="display: none; z-index: 10001">
  <div style="position: fixed; z-index: 10001; top: 50%; left: 50%; height:65px">
      <img src="~/Images/loading.gif" alt="Loading..." />
    </div>
</div>
试试这个。我希望它也能对你起作用。快乐编码:-)

或者简单地说

$.ajax({ 
                    .. , 
                 beforeSend: function () { $('#LoaderDiv').show(); },

                 success: function (data) { $('#LoaderDiv').hide(); } 
        });

这将使它更快一些

将setTimeout放在ajax请求之前。我尝试过很多解决方案,但这一个肯定有效

$("#loader").show();
setTimeout(function () {
  //AJAX REQUEST CODE
  $("#loader").hide();
},10);

也许可以将ajax调用放在另一个函数中,并在100毫秒或更小的时间后使用setTimeout来调用它?这意味着GIF动画卡在中间。对吧?看@artm:尝试过但没有用@Apul Gupta:是的,但只有当开发人员工具打开时才会出现这种情况,如果没有,加载程序甚至不可见。当使用async=false时,微调器可能不会显示,所以如果上面的答案仍然没有显示加载程序,请尝试删除它,它为我解决了问题。
$.ajax({ 
                    .. , 
                 beforeSend: function () { $('#LoaderDiv').show(); },

                 success: function (data) { $('#LoaderDiv').hide(); } 
        });
$("#loader").show();
setTimeout(function () {
  //AJAX REQUEST CODE
  $("#loader").hide();
},10);
Don't use async: false, Solution is this:-

var requestStatus = 1;
$('#LoaderDiv').show();
if( requestStatus != 0) {
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: servicePath,
                beforeSend: function() {
                   requestStatus = 0;
                },
                success: function (data) {
                    console.log(data.d);
                    $('#LoaderDiv').hide();
                    requestStatus = 1;
                }
            });
}