我有以下可用于处理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中那样暂时显示?
答案 0 :(得分:0)
您的问题是您在ajax请求中设置了async: false
,这会冻结javascript引擎,直到您收到回复为止。
删除它,(除了发生可怕的事情)再也不用了它..
答案 1 :(得分:0)
试试这个
success: function(result)
{
jQobj.append(result);
jQuery(".tempload").remove();
}
我认为jquery选择器没有找到“.tempload”所以有错误,下一行不起作用