在下面的代码片段中,我将匿名函数分配给 onreadystatechange 变量,一切正常,但是如果我将命名函数分配给此变量则不起作用。
<script language="Javascript">
function postRequest(strURL)
{
var xmlHttp;
if (window.XMLHttpRequest) // Mozilla, Safari, ...
var xmlHttp = new XMLHttpRequest();
else if (window.ActiveXObject) // IE
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open('POST', strURL, true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlHttp.onreadystatechange = function()
{
alert("you are in anonymous");
}
xmlHttp.send(strURL);
}
</script>
以上代码有效,但以下内容无效。函数foo()
不会被调用:
<script language="Javascript">
function foo()
{
alert("you are in foo");
}
/*----------------------------------------------*/
function postRequest(strURL)
{
var xmlHttp;
if (window.XMLHttpRequest) // Mozilla, Safari, ...
var xmlHttp = new XMLHttpRequest();
else if (window.ActiveXObject) // IE
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open('POST', strURL, true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlHttp.onreadystatechange = foo;
xmlHttp.send(strURL);
}
</script>
为什么?
答案 0 :(得分:-1)
问题已解决。 var xmlHttp 必须是全局的。虽然我没有在foo()中使用 xmlHttp ,但可能是 xmlHttp 对象内部需要它!谁知道为什么?无论如何,这个问题已经解决了。感谢