簡體   English   中英

為什么HourGlass無法在Google Chrome瀏覽器中處理同步AJAX請求?

[英]Why HourGlass not working with synchronous AJAX request in Google Chrome?

我正在執行一個函數,首先使光標處於等待狀態(沙漏),然后發送同步的AJAX請求。獲得響應后,我使光標處於默認狀態。

實際的代碼是這個。

//測試smtp設置功能TestSettings(){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 formdata;

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 button = 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調用失敗,請不要忘記這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM