代码之家  ›  专栏  ›  技术社区  ›  Kemo

在对象内部使用ajax.request-response?-原型JS

  •  1
  • Kemo  · 技术社区  · 15 年前

    在过去的两个小时里,我一直试图将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传递给这个rezultat变量的对象。 有什么建议吗?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Greg    15 年前

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

    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;
      }
     });