使用Ajax.Request返回值

时间:2009-06-22 21:27:57

标签: javascript prototypejs

为什么当从Ajax调用返回值时,此脚本会导致'undefined'?

function myShippingApp() {

this.shipper = 0;

this.init() {
    this.getShipRate();
    alert(this.shipper);
}

this.getShipRate = function() {

    var zip = $('zip').value;
    if(zip == '') {
        return false;
    } else {
        var url = 'getrate.php?zip='+zip;
        this.shipper = new Ajax.Request(url, {
            onComplete: function(t) {
                $('rates').update("$"+t.responseText);
                return t.responseText;
            }
        });
    }
}

}

我正在使用Prototype框架,并且无法将值返回给对象。 我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

你想要的值是在t.responseText中,它不会被Ajax.Request对象“返回”,因此this.shipper永远不会赋值。

这可能更符合您的要求:

function myShippingApp() {

  this.shipper = 0;

  this.init() {
    this.getShipRate();
  }

  this.getShipRate = function() {
    var zip = $('zip').value;
    if(zip == '') {
      return false;
    } else {
      var url = 'getrate.php?zip='+zip;
      new Ajax.Request(url, {
        onComplete: function(t) {
          $('rates').update("$"+t.responseText);
          this.shipper = t.responseText;
          alert(this.shipper);
        }
      });
    }
  }
}

让我知道它是否适合你。

答案 1 :(得分:0)

Ajax.Request不返回任何值,它是对象的实例化。

我猜你可以说价值就是对象本身。