对这里的问题有什么见解吗?运行时,代码不会产生任何结果。页面上没有显示任何文字。如果我取消注释行,则会显示 xml 结果。为什么我不能将它作为变量传递? (我确实收到了警报,仅供引用,因此正在调用该函数。)
<script type="text/javascript">
function loadXMLDoc(parameterString)
{
alert("loadXMLDoc has been called.");
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
//document.getElementById("xmlResults").innerHTML = xmlhttp.responseText;
alert("Got the response!");
return xmlhttp.responseText;
}
else document.getElementById("xmlResults").innerHTML = "No results."
}
var url = "http://metpetdb.rpi.edu/metpetwebsearchIPhone.svc?" + parameterString;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
<script type="text/javascript">
$(function(){
//left out irrelevant code which creates the var "parameters"
var results = loadXMLDoc(parameters);
document.getElementById("xmlresults").innerHTML = results;
});
</script>
<body>
<div id="xmlResults"></div>
</body>
最佳答案
根据定义,异步调用执行实际工作,而不会让调用者等待结果。您确实需要使用回调函数,例如:
<script type="text/javascript">
function loadXMLDoc(parameterString, onComplete, onError) {
alert("loadXMLDoc has been called.");
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
if(xmlhttp.status==200) {
//document.getElementById("xmlResults").innerHTML = xmlhttp.responseText;
alert("Got the response!");
onComplete(xmlhttp.responseText);
} else {
onError();
}
}
};
var url = "http://metpetdb.rpi.edu/metpetwebsearchIPhone.svc?" + parameterString;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
<script type="text/javascript">
$(function(){
//left out irrelevant code which creates the var "parameters"
loadXMLDoc(parameters, function(results) {
// this function will be called if the xmlhttprequest received a result
document.getElementById("xmlresults").innerHTML = results;
}, function() {
// this function will be called if xhr failed
document.getElementById("xmlResults").innerHTML = "No results.";
});
});
</script>
顺便说一句,由于您已经在使用 jQuery,因此您应该使用 its builtin AJAX functionality而不是构建您的自定义 xmlhttprequest。
关于javascript - 无法返回 xmlhttp.responseText?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10369839/