在对象内部使用Ajax.Request响应? - PrototypeJS

时间:2009-10-09 08:40:46

标签: javascript class object prototypejs ajax.request

过去两个小时我一直试图将responseText传递给我正在调用Ajax.Request的对象。它只是没有发生:)这是代码;

    var traziSuggest = Class.create({  
   initialize:function( elemenat, sugDiv )
   {
    this.elemenat = $( elemenat );
    this.elemenat.onkeyup = this.uzmiSug.bindAsEventListener(this);
    this.elemenat.onkeydown = this.uzmiSug.bindAsEventListener(this);

    this.rezultat = new Array();

    this.sugDiv = $( sugDiv );

    this.prethodnaDuzina = this.elemenat.value.length;
   },
   uzmiSug:function()
   {
    this.novaDuzina = this.elemenat.value.length;

    if ( this.novaDuzina > 3 && this.novaDuzina != this.prethodnaDuzina )
    {     
     new Ajax.Request( '/ajax/traziSuggest.php?sta=mjesto&q=' + this.elemenat.value , 
     {
      method: 'get',
      onSuccess: function(transport)
      {
       traziSuggest.rezultat = transport.responseText;
      }
     });

     this.prikaziSug;
    }
    else
    {
     this.sugDiv.hide();
    }

    this.prethodnaDuzina = this.novaDuzina;
   },
   prikaziSug: function()
   {
    var zemlje = this.rezultat.zemlje;
    var mjesta = this.rezultat.mjesta;
    var lokacije = this.rezultat.lokacije;
   }
  });

所以,我需要的是将transport.responseText传递给this.rezultat变量对象。 有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以创建一个闭包,如下所示:

if ( this.novaDuzina > 3 && this.novaDuzina != this.prethodnaDuzina )
{   

  var self = this; 

 new Ajax.Request( '/ajax/traziSuggest.php?sta=mjesto&q=' + this.elemenat.value , 
 {
  method: 'get',
  onSuccess: function(transport)
  {
   self.rezultat = transport.responseText;
  }
 });