Ajax return content

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis Sluijk

Dennis Sluijk

11/01/2012 22:40:09
Quote Anchor link
Heej,

Ik heb één functie die ziet er zo uit...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            function ajax(url, post, container, loadcontainer, loading) {
                
                var ajax_result;
                
                loading = typeof(loading) != 'undefined' ? loading : 'Loading...';

                loadcontainer = typeof(loadbar) != 'undefined' ? loadcontainer : container;

                $(loadcontainer).html("Loading...").show();

                $.post(url, post, function(data) {

                    $(container).html(data);
                    ajax_result = data;
                });

                return ajax_result;
            }



Wat ik nu verwacht van die functie dat die een (php)file oproept. Dat doet die ook. Maar als ik de ajax functie in een andere functie zou gebruiken. bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
functie doeiets() {
    var a = ajax(bla, bla, bla, bla);

    
}

dan zou ik denken dat er in a de content die ik terug kreeg van de opgeroepen pagina staat. Maar als ik em bijvoorbeeld simpel laat zien met jQuery in 1 div
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
functie doeiets() {
    var a = ajax(bla, bla, bla, bla);

    $("#result2").html(a);
}

Dat doet die niet. Ik heb dit ook geprobeerd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
functie doeiets() {
    var a = ajax(bla, bla, bla, bla);

    document.write(a);
}

Dan krijg ik undefined te zien..

Kan iemand mij helpen?
Gewijzigd op 11/01/2012 22:46:34 door Dennis Sluijk
 
PHP hulp

PHP hulp

17/01/2022 01:52:15
 
Marco PHPJunky

Marco PHPJunky

11/01/2012 22:42:48
Quote Anchor link
Zou je er maby Code tags omheen kunnen zetten ?
en de topic titel aanpassen omdat "probleem" geen correcte/goede titel is..
Gewijzigd op 11/01/2012 22:51:07 door Marco PHPJunky
 
Dennis Sluijk

Dennis Sluijk

11/01/2012 22:46:48
Quote Anchor link
Marco PHPJunkie op 11/01/2012 22:42:48:
Zou je er maby Code tags omheen kunnen zetten ?
en de topic titel aanpassen omdat het geen correcte/goede titel is..



Zoiets??
 
Kris Peeters

Kris Peeters

11/01/2012 23:20:19
Quote Anchor link
Zo werkt ajax niet.

Ajax is asynchroon. Dat wil zeggen, javascript gaat op zijn eigen tempo, achter je rug connectie zoeken met de server. Dat gebeurt niet onmiddellijk, dus je kunt niet zomaar die opgehaalde data als return verwachten.

Javascript verwittigt je, wanneer het de data heeft opgehaald, door een functie (callback) aan te roepen.

In jouw geval is dat dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
function(data) {

  $(container).html(data);
  ajax_result = data;
}


Alles wat je van plan bent met die data, moet je in die functie regelen.

Let er ook op: je zit daar in een andere functie. Variabelen die in je request zijn aangemaakt kan je niet gebruiken in deze functie; en vice versa
Gewijzigd op 11/01/2012 23:23:33 door Kris Peeters
 
Dennis Sluijk

Dennis Sluijk

11/01/2012 23:35:20
Quote Anchor link
Ik heb ook gehoord over closures zou dat een goeie oplossing zijn?

Toevoeging op 11/01/2012 23:49:19:

naaaah, Ik maak wel gewoon elke functie apart :p maar dankje voor het helpen :p
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.