AJAX请求是异步的。您的sendRuest函数正在执行,正在发出AJAX请求,但它是异步发生的;因此,sendRuest的其余部分在AJAX请求(和onreadystatechange处理程序)执行之前就已执行,因此
the_variable在返回时未定义。
有效地,您的代码如下工作:
function sendRuest(someargums) { var the_variable; return the_variable;}var data = sendRequest(someargums);
然后过了一段时间,您的AJAX请求已完成;但为时已晚
您需要使用一种称为回调的方法:
您以前可能曾经有过的地方
function () { var theResult = sendRuest(args); // do something;}
你应该做:
function () { sendRuest(args, function (theResult) { // do something });};
并
sendRuest进行如下修改:
function sendRuest(someargums, callback) { //here's that other function request.onreadystatechange =function() { if (request.readyState == 4) { switch (request.status) { case 200: callback(request.responseXML); //somewhere here the function closes }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)