jQuery附加浏览器兼容性

时间:2015-09-23 02:06:18

标签: jquery html ajax

我有以下可用于处理AJAX请求的函数。在这种情况下,我想将结果附加到我传入的任何jQuery对象中。

function GetAppendURLforjQobjwData(url, jQobj, args, showload) {
    if (showload) {
        jQobj.append("<div class='tempload'><p>Please wait for page to load!</p><img src='/NTMPNGServices/images/ajax-loader.gif' alt='Wait' /></div>");
    }
    jQuery.ajax({
        type: "POST",
        async: false,
        url: url,
        data: args,
        success: function(result) {
            jQuery(".tempload").remove();
            jQobj.append(result);
        }
    });
}

ajax本身效果很好。当我在Firefox中运行它时,一切都按预期完成。如果showload为真,则会立即弹出带有gif图像的div。处理完请求后,将删除gif并正确附加结果。

问题是这在Chrome或IE中无效。 ajax部分很好,最终会显示结果,但是用户没有反馈告诉他们发生了什么事情。

如果我完全取出jQuery.ajax({...,那么gif在所有浏览器中都会显示得很好。或者,如果我删除jQuery(".tempload").remove();,那么我将获得gif和ajax请求的结果。

为什么我的加载屏幕不会像在Chrome和IE中那样暂时显示?

2 个答案:

答案 0 :(得分:0)

您的问题是您在ajax请求中设置了async: false,这会冻结javascript引擎,直到您收到回复为止。

删除它,(除了发生可怕的事情)再也不用了它..

答案 1 :(得分:0)

试试这个

success: function(result) 
{
      jQobj.append(result);
      jQuery(".tempload").remove();
}

我认为jquery选择器没有找到“.tempload”所以有错误,下一行不起作用

相关问题