在ajax调用中加载图像在chrome中不起作用

时间:2016-08-20 06:56:57

标签: javascript jquery ajax asp.net-ajax dynamics-crm-2013

我有一个html页面,我希望在loading image之间显示处理ajax call以进行保存和成功。 那个页面我将动态crm作为网络主题。

  

问题是,在mozilafirefox中加载工作正常,但没有工作   铬。

脚本:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

其他代码:

<img src="sm_loading.gif" id="loading" style="display:none" />
<input class="custom-btn" id="btnsave" value="Save" onclick="SaveData();"  type="button">
function SaveData() {
    $('#loading').show();
    var stocktrack = {};
    stocktrack.sm_Description = descval;
    var jsonPO = window.JSON.stringify(stocktrack);
    var oDataUri = serverUrl + "/XRMServices/2011/OrganizationData.svc/sm_stocktrackingSet";
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        url: oDataUri,
        data: jsonPO,
        async: false,
        beforeSend: function (XMLHttpRequest) {
            XMLHttpRequest.setRequestHeader("Accept", "application/json");
        },
        success: function (data, textStatus, XmlHttpRequest) {
            debugger;
            $('#loading').hide();
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(textStatus);
        }
    });
}

请建议是否有任何解决方案。

3 个答案:

答案 0 :(得分:0)

我在Firefox中运行了你的代码并且它运行良好。正如你所说,我也在Chrome中运行并没有得到任何结果。但是,通过在Chrome中打开调试器,使用F12,我收到以下错误。

主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用。如需更多帮助,请查看https://xhr.spec.whatwg.org/

要解决此问题,请将ajax调用中的async标志设置为true。

如果您希望防止用户在异步调用期间按下内容,这是完全可以理解的,我建议您使用透明阻止层。

答案 1 :(得分:0)

我得到了答案。

使用setTimeout(function(){..我们的代码..},10);我可以使用async:false显示chrome中的加载。

参考链接:

https://www.experts-exchange.com/questions/25187194/jQuery-async-false-with-beforeSend.html

答案 2 :(得分:0)

加载面板仅适用于异步:True, 其他方面它只适用于firefox,大多数其他浏览器不显示加载面板。 但是使用异步假,除了成功和错误(回调函数)之外的所有代码都将被执行。