我有试图从以下面的方式呼叫功能捕获返回值的函数:无法从JavaScript函数返回一个对象的值
var select = xhrRetrieve(projID);
这里是xhrRetrieve函数的一个例子:
function xhrRetrieve(projID) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if(xhr.readyState == 4) {
if(xhr.status == 200) {
var obj = $.parseJSON(xhr.responseText);
return obj.select.toString();
}
}
}
var url = "ajax.cgi";
var data = "action=retrieve-opp&proj-id=" + projID;
xhr.open("POST",url);
xhr.setRequestHeader("Content-Type","application/x-www-urlencoded");
xhr.send(data);
}
我正在使用jQuery结合直JavaScript。每当我尝试使用得到obj.select值:
var select = xhrRetrieve(projID);
选择总是回来undefined
。
我在做什么错?
没有了'返回obj.select.toString();'内'xhr.onreadystatechange'实现这一目标? – daniel0mullins
不,只有当XHR事件被触发时才会发生。如果你想阻塞呼叫,你需要在调用xhr.send时设置async = false;或者更好地使用异步解决方案,比如Bjorn发布的片段。 – Mikola