Использование ответа Ajax.Request внутри объекта? - Прототип JS - PullRequest
1 голос
/ 09 октября 2009

в течение последних двух часов я пытался передать 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 Ответ

2 голосов
/ 09 октября 2009

Вы можете создать замыкание, например так:

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