当前位置:  开发笔记 > 编程语言 > 正文

为什么我不能设置一个等于XMLHttpRequest的responseText值的变量?

如何解决《为什么我不能设置一个等于XMLHttpRequest的responseText值的变量?》经验,为你挑选了1个好方法。

如果我在XHR的onreadystatechange函数中,我可以很容易地做到document.title = xhr.responseText,但如果我让函数返回responseText,我就不能设置一个等于我的XHR外层包装的变量来使它等于响应; 这有什么办法吗?

我的包装:

ajax = function(url, cb)
 {
    xhr = (window.XMLHttpRequest)
        ? new XMLHttpRequest()
        : new ActiveXObject('Microsoft.XMLHTTP');
    xhr.onreadystatechange = function()
     {
        if (xhr.readyState == 4 && xhr.status == 200)
         {
            cb(xhr.responseText);
         };
     }
    xhr.open('get', url, true);
    xhr.send();
 };

现在,如果我做了类似的事情:

ajax('bacon.txt', function(_)
 {
    document.title = _;
 }

它绝对完美; document.title实际上成为了对bacon.txt的调用的responseText.但是,如果我尝试以这种方式实现它:

document.title = ajax('bacon.txt', function(_)
 {
    return _;
 }

没有这样的运气.任何人都可以澄清为什么会这样吗?};



1> AnthonyWJone..:

您将ajax函数的返回分配给标题.ajax函数本身不返回任何内容.

AJAX的重点在于,在收到任何响应之前,函数立即返回它已向服务器发出请求.你正在为title属性分配undefined(BTW,我通常有我的ajax函数返回正在使用的xhr,允许我在必要时中止).

当请求完成时,将调用回调(代码中的cb)函数,因此您的原始代码有意义,它会进行分配.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有