Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么沙漏不能在Google Chrome中处理同步AJAX请求?_Javascript_Ajax_Google Chrome - Fatal编程技术网

Javascript 为什么沙漏不能在Google Chrome中处理同步AJAX请求?

Javascript 为什么沙漏不能在Google Chrome中处理同步AJAX请求?,javascript,ajax,google-chrome,Javascript,Ajax,Google Chrome,我正在执行一个函数,首先将光标设置为等待状态(沙漏),然后发送一个同步AJAX请求。得到响应后,我将光标设置为默认状态 实际代码如下 //测试smtp设置 函数TestSettings() { var buttonpams=新对象() } 函数SendForm(pButtonParams) { var-http; var格式数据 http = yXMLHttpRequest(); http.open("POST", "./", false); http.setRequestHeader("Co

我正在执行一个函数,首先将光标设置为等待状态(沙漏),然后发送一个同步AJAX请求。得到响应后,我将光标设置为默认状态

实际代码如下

//测试smtp设置 函数TestSettings() { var buttonpams=新对象()

}

函数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);   
}   
}

功能手柄按钮状态(pIsButtonStatusChange,pButtonSParams) { var-button=yById(pButtonParams.ButtonId)

}尝试分配:

var st = document.body.style;
然后参考两个功能中的
st
。这可能是AJAX回调函数的作用域问题

编辑:使用回调函数恢复光标形状。如果AJAX调用失败,请不要忘记执行同样的操作。

尝试分配:

var st = document.body.style;
然后参考两个功能中的
st
。这可能是AJAX回调函数的作用域问题


编辑:使用回调函数恢复光标形状。如果AJAX调用失败,不要忘记执行同样的操作。

请不要使用同步AJAX请求。他们将锁定浏览器,直到请求完成。请不要使用同步AJAX请求。他们将锁定浏览器,直到请求完成。耶..现在工作正常..但还有一个问题。。我正在创建一个对象,然后让游标等待我的应用程序。如果我正在创建它,那么沙漏在谷歌浏览器中也不起作用。如果我对CREATEOBJECT语句进行注释,那么hour glass正在工作。为什么?我将更新给定的代码。我认为您应该提供完整的代码或此函数。有一件事和其他事情有关,现在我明白了。请求函数是一个经典的闭包。当您创建var obj时,您将创建一个全局上下文,以防止
request
函数指针释放。它的工作原理如下:首先调用
request'函数时,它会按预期工作,发送AJAX请求。在AJAX完成时,
request`函数的上下文不再存在,除非您通过在外部范围中定义
obj
来保留它,从而创建一个闭包。即使是同步AJAX调用也可以通过回调函数异步工作。您最好在回调函数中设置光标(使用onstatechange),而不是在
请求中设置光标。对不起,我可能会把您弄糊涂。我正在发布我编写的实际代码。我认为Google Chrome可以异步(即在单独的线程中)执行所有XHR,即使它设置为同步。尝试将所有操作移动到
onreadystatechange
callback function.ya..现在工作正常..但还有一个问题。。我正在创建一个对象,然后让游标等待我的应用程序。如果我正在创建它,那么沙漏在谷歌浏览器中也不起作用。如果我对CREATEOBJECT语句进行注释,那么hour glass正在工作。为什么?我将更新给定的代码。我认为您应该提供完整的代码或此函数。有一件事和其他事情有关,现在我明白了。请求函数是一个经典的闭包。当您创建var obj时,您将创建一个全局上下文,以防止
request
函数指针释放。它的工作原理如下:首先调用
request'函数时,它会按预期工作,发送AJAX请求。在AJAX完成时,
request`函数的上下文不再存在,除非您通过在外部范围中定义
obj
来保留它,从而创建一个闭包。即使是同步AJAX调用也可以通过回调函数异步工作。您最好在回调函数中设置光标(使用onstatechange),而不是在
请求中设置光标。对不起,我可能会把您弄糊涂。我正在发布我编写的实际代码。我认为Google Chrome可以异步(即在单独的线程中)执行所有XHR,即使它设置为同步。尝试将所有操作移动到
onreadystatechange
回调函数。
var st = document.body.style;