【问题标题】:Return undefined class javascript [closed]返回未定义的类javascript [关闭]
【发布时间】:2014-02-24 22:48:25
【问题描述】:

请帮帮我,我有问题。这是我的代码:

function Cnx() {
    var url = 'http://192.168.0.13/activity?name=flower';
    var solicitud = new XMLHttpRequest();
    this.res;
    solicitud.addEventListener('load', cargar, false);

    solicitud.open("GET", url, true);
    solicitud.send(null);

    function cargar(e) {
        this.setRes(e.target.responseText);
    }

    this.setRes = function(valor) {
        this.res = valor;
    }

    this.getRes = function() {
        alert(this.res);
    }

}

然后,我打电话:

var cnx= New Cnx(); alert(cnx.getRes());

但是,这返回未定义。如果我从按钮调用例如 cnx.getRes() 它会返回正确的值。

注意:ajax 调用工作正常。

为什么会这样?

非常感谢您提前。对不起我的英语不好...

【问题讨论】:

  • 可能是因为getRes 没有返回任何东西?
  • 您的实际e.target.responseText 输出是什么?试试console.log(e.target.responseText);
  • 非常感谢你们。

标签: javascript ajax class return-value


【解决方案1】:

除了 Ed 的观察之外,还有另一个问题:

在调用New Cnx(); 后,控制流不会等待 XMLHttpRequest 完成。因此,如果您在调用 cnx.getRes() 之前不等待请求完成,则响应将永远不可用。

您可以做的最好的事情是将其余代码放入您的 cargar 函数中,该函数将在响应加载后立即被自动调用。

【讨论】:

  • 谢谢你说的完全正确,我修复了我的脚本,它工作正常。
  • +1 表示收获。
【解决方案2】:

getRes()没有返回值,所以返回值是未定义的。

【讨论】:

  • YMMD的回答也是正确的;你需要解决这两个问题。
猜你喜欢
  • 2012-09-18
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多