javascript - 当同步选项不可用时,如何等待 ajax 请求在 javascript 中完成?

标签 javascript ajax

我正在尝试等待 AJAX 请求完成。如果方法 xmlhttp.open 支持 async = false 就很容易了,但是 Ant Galio 不支持这个选项并且只允许异步请求。问题是我如何等待回调被调用。

    var ajaxFinished = false;
    var xmlhttp = new XMLHttpRequest();
    this.debug("-- onreadystatechange is being defined");
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            ajaxFinished = true;
                var data = xmlhttp.responseText;
            if (xmlhttp.status == 200) {
                that.debug('downloadSettings: SUCCESS');
                [...]
            } else {
                that.debug('downloadSettings:');
                that.debug('-- Error: ');
                that.debug('-- ResponseText: "'+data+'"')
            }
        }
    }

    while (ajaxFinished == false) {

    }

    this.debug("-- open connection");
    xmlhttp.open("GET", requestUrl, true); /* Ant Galio does not support synchronous  */
    this.debug("-- send");
    xmlhttp.send();                 

我正在寻找某种主动等待。我知道另一种解决方案,但我对不需要更改比我上面的示例更多代码的解决方案感兴趣。

谢谢!

最佳答案

是的,你可以

function getFile(url) {
  if (window.XMLHttpRequest) {              
    AJAX=new XMLHttpRequest();              
  } else {                                  
    AJAX=new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (AJAX) {
     AJAX.open("GET", url, false);                             
     AJAX.send(null);
     return AJAX.responseText;                                         
  } else {
     return false;
  }                                             
}

var fileFromServer = getFile('http://somedomain.com/somefile.txt');

w3c 定义 http://www.w3.org/TR/XMLHttpRequest/#the-open()-method

client . open(method, url [, async = true [, user = null [, password = null]]])

关于javascript - 当同步选项不可用时,如何等待 ajax 请求在 javascript 中完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11759493/

相关文章:

javascript - 如何上传/发布多个 Canvas 元素

javascript - 在 Meteor 中解析错误的服务器响应

JavaScript:使用 .exec() 查找连续匹配项

javascript - 如何使用ajax结果设置选定字段的值?

php - 使用 Ajax 的动态菜单

javascript - 使 json 字符串与饼图数据源的确切字符串匹配?如何

javascript - 用于向上或向下重定向级别的按钮/链接

javascript - 获取对象字面量内定义的符号的值并迭代其值

javascript - 为什么变量 "name"被输入为字符串?

javascript - 正确使用History.js和AJAX动态加载