我想异步获取我的网站的内容。现在我对我的服务器有多个请求,我认为将“连接东西”分离到另一个函数中会很棒:
function conToServerAsync( url, postParams, func )
{
var xmlHttp;
if( window.XMLHttpRequest )
{
xmlHttp = new XMLHttpRequest();
}
else
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.onreadystatechange = func;
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(postParams);
}
现在我有另一个执行“conToServerAsync”函数的函数,如下所示:
function findSearchResult(value)
{
conToServerAsync( "Classes/Async/liveSearch.php", "sVal="+value, function()
{
if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
{
document.getElementById("searchResult").innerHTML = xmlHttp.responseText;
document.getElementById("searchResult").style.border="1px solid #A5ACB2";
}
});
}
现在,我的案例真正有趣的是,我已经检查了所有内容,并且传入的每个参数都是有效的。然后我尝试将最后一个参数“conToServerAsync("Classes...", "sVal..", function(){...}" 中给出的函数直接分配给 onreadystatechange:
...
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
{
document.getElementById("searchResult").innerHTML = xmlHttp.responseText;
document.getElementById("searchResult").style.border="1px solid #A5ACB2";
}
}
...而且它工作得很好:S 所以肯定错误是关于以错误的方式传递函数,我不知道。因为我的情况是具体的,我对此提出了自己的问题。
谢谢你的回答:)