Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[AJAX/proto] Ajax.Request callback naar parentobject

Pagina: 1
Acties:

  • storeman
  • Registratie: April 2004
  • Laatst online: 00:34
Ik probeer nu al enige tijd de Ajax.Request te doorgronden, gebruikens geeft in eerste instantie niet zoveel problemen, tot het moment dat ik meer wil dan een simpele request.

Ik wil een suggestionbox laten zien onder een tekstveld, en natuurlijk wil ik meerder velden in een form laten zien. En natuurlijk ben ik lui en wil ik niet voor elk veld nieuwe functies defineeren.

Dus een object zou uitkomst kunnen bieden.

Ik heb het volgende:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function Suggestion(oSource, strURL, strResponseFormat, oValue){
    this.oSource = oSource;
    this.oValue = oValue;
    this.strURL = strURL;
    this.strResponseFormat = strResponseFormat;
    
    // Turn of autocompletion for the source box
    this.oSource.setAttribute("autocomplete", "off");
}
Suggestion.prototype.Show = function(){
    
    // Hide all selectboxes
    HideAllSelectboxes();
    
    this.oSearchDiv = document.createElement('div');
    this.oSearchDiv.id = this.oSource.id + '_search';
    this.oSearchDiv.className = 'SuggestionBox';
    this.oSearchDiv.style.visibility = 'visible';
    this.oSearchDiv.style.position = 'absolute';
    this.oSearchDiv.style.left = findPosX( this.oSource ) + 'px';
    this.oSearchDiv.style.top = findPosY( this.oSource ) + this.oSource.offsetHeight  + this.oSource.style.borderBottomWidth + 'px';
    
    document.body.appendChild( this.oSearchDiv );
    
    this.Request = new Ajax.Request(this.strURL + this.oSource.value, {
        onLoaded : function() {// En hoe doe ik nu een callback naar het aanroepende Suggestion object
}
    });
}

Suggestion.prototype.StartSearch = function(){
    this.oSearchDiv.innerHTML = 'Start searching...';
}

Suggestion.prototype.ShowResults = function(t){

}


Zoals te zien gebruik ik de prototype library voor mijn ajax request. Ik ben al vaker aan het stoeien geweest met callbacks, maar dit gaat nog niet iets verder.

Ik wil dus de objectfunctie aanroepen om de searchdiv te vullen met het resultaat. Hoe het nu in de functie staat, werkt dus zeker niet. Ik heb er al een aantal experimenten op los gelaten, maar geen van allen gaat in de goede richting.

"Chaos kan niet uit de hand lopen"


  • storeman
  • Registratie: April 2004
  • Laatst online: 00:34
Ik heb niet stil gezeten, en wil jullie dit natuurlijk niet onthouden, ik heb eea gevonden op prototypejs.org.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function Suggestion(oSource, strURL, strResponseFormat, oValue){ 
    this.oSource = oSource; 
    this.oValue = oValue; 
    this.strURL = strURL; 
    this.strResponseFormat = strResponseFormat; 
     
    // Turn of autocompletion for the source box 
    this.oSource.setAttribute("autocomplete", "off"); 
} 
Suggestion.prototype.Show = function(){ 
     
    // Hide all selectboxes 
    HideAllSelectboxes(); 
     
    this.oSearchDiv = document.createElement('div'); 
    this.oSearchDiv.id = this.oSource.id + '_search'; 
    this.oSearchDiv.className = 'SuggestionBox'; 
    this.oSearchDiv.style.visibility = 'visible'; 
    this.oSearchDiv.style.position = 'absolute'; 
    this.oSearchDiv.style.left = findPosX( this.oSource ) + 'px'; 
    this.oSearchDiv.style.top = findPosY( this.oSource ) + this.oSource.offsetHeight  + this.oSource.style.borderBottomWidth + 'px'; 
     
    document.body.appendChild( this.oSearchDiv ); 
     
    this.Request = new Ajax.Request(this.strURL + this.oSource.value, { 
        onLoaded : this.StartSearch.bind(this)
    }); 
} 

Suggestion.prototype.StartSearch = function(){ 
    this.oSearchDiv.innerHTML = 'Start searching...'; 
} 

Suggestion.prototype.ShowResults = function(t){ 

}


Fantastisch toch, die jongens hebben er wel over nagedacht :).

Overigens hier gevonden: http://groups.google.com/...t+object#3d6ad2090724b6a4

"Chaos kan niet uit de hand lopen"