我正在执行一个函数,首先我将光标设置为等待状态(沙漏),然后发送同步 AJAX 请求。收到响应后,我将光标设置为默认状态。
实际代码是这样的..
//测试 smtp 设置 函数测试设置() { var Buttonparams= new Object();
buttonparams.IsCommandButton = true;
buttonparams.ButtonId = "testsettings";
buttonparams.ButtonText = "Sending Test Mail...";
buttonparams.ButtonOrigText = "Test Settings";
if(buttonparams.IsCommandButton == true)
HandleButtonStatus(true, buttonparams);
var request = function()
{
var ret = SendForm(buttonparams);
alert(ret);
}
window.setTimeout(request, 0);
}
函数SendForm(pButtonParams) { var http; var 表单数据;
http = yXMLHttpRequest();
http.open("POST", "./", false);
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http.setRequestHeader("Req-Type", "ajax");
formdata = xEncodePair("_object", "PrefMgr")+ "&";
formdata += xEncodePair("_action", "SmtpTest")+ "&";
formdata += GetEncodedFormData();
http.send(formdata);
if(http.status == 200)
{
if(pButtonParams.IsCommandButton == true)
HandleButtonStatus(false, pButtonParams);
return (http.responseText);
}
else
{
return ("Error " + http.status + ": " + http.statusText);
}
}
函数 HandleButtonStatus(pIsButtonStatusChange, pButtonParams) { var 按钮 = yById(pButtonParams.ButtonId);
if(pIsButtonStatusChange)
{
document.body.style.cursor = "wait";
button.value = pButtonParams.ButtonText;
button.disabled = true;
}
else
{
document.body.style.cursor = "default";
button.disabled = false;
button.value = pButtonParams.ButtonOrigText;
}
}
最佳答案
尝试分配:
var st = document.body.style;
然后在两个函数中引用st
。这可能是 AJAX 回调函数中的范围问题。
编辑:使用回调函数恢复光标形状。不要忘记执行相同的操作,以防 AJAX 调用失败。
关于javascript - 为什么 HourGlass 无法在 Google Chrome 中使用同步 AJAX 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/924681/