为了更好地组织代码,我不想在 req.onreadystatechange 处理程序中放置回调函数,而是简单地返回数据。
在以下 javascript 中,“raw_data”变量未定义,因为在 ajax 响应之前调用了 parse_data() 函数。
function dostuff(){
var raw_data = ajax_fetch_data();
var parsed_data = parse_data(raw_data);
}
是否可以在 ajax_fetch_data() 中的 req.onreadystatechange 返回数据之前不调用 parse_data()?
我不喜欢将 parse_data() 调用作为回调嵌套在 ajax_fetch_data() 中。
最佳答案
Ajax 中的 A 表示“异步”。如果您的调用是异步的,则不可能使用那样的返回值。您必须等待带有回调的事件。但是,您可以像这样发送同步请求:
var req = new XMLHttpRequest();
req.open('GET', 'http://www.example.org/', false);
req.send(null);
if(req.status == 200)
return req.responseText;
第二行的false
指定同步性质(第三个参数的默认值为true
)。
Mozilla Developer Center 还有更多内容.
关于javascript - 如何返回 AJAX 响应文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1546908/