Toon posts:

[AJAX] xmlhttp.onreadystatechange=functie met argumenten

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende AJAX javascript functies:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function process() 
{
    if (xmlhttp.readyState == 4) 
    {
        document.getElementById("left").innerHTML = xmlhttp.responseText;
    }
}

function load(frame, args) 
{
    if (xmlhttp) 
    { 
        xmlhttp.open("GET", "index.php?frame=" +frame +args, true);
        xmlhttp.onreadystatechange=process;
        xmlhttp.send(null);
    }
}


Maar zogauw ik xmlhttp.onreadystatechange=proces verander in bijvoorbeeld xmlhttp.onreadystatechange=process(frame) dan werkt de code in de process functie niet meer... (Ik maak van deze functie natuurlijk wel weer process(frame)). Heeft iemand een idee hoe dit kan?

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Probeer dit eens:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function load(frame, args) 
{
    if (xmlhttp) 
    { 
        xmlhttp.open("GET", "index.php?frame=" +frame +args, true);
        xmlhttp.onreadystatechange = function() 
        {
          if (xmlhttp.readyState == 4) 
          {
             // de var frame moet je nu wel kunnen gebruiken
             document.getElementById("left").innerHTML = xmlhttp.responseText;
          }
        }
        xmlhttp.send(null);
    }
}


Overigens zou ik ipv innerHTML eens naar het DOM kijken. Dat is niet alleen netter, maar je kan er ook veel meer met doen.

Geen idee of dit werkt trouwens, ikzelf haal de doorgestuurde parameters altijd terug uit index.php met het DOM.

[ Voor 12% gewijzigd door XWB op 20-03-2006 15:19 ]

March of the Eagles


  • giMoz
  • Registratie: Augustus 2002
  • Laatst online: 21-01 09:10

giMoz

iets met meester...

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
function process(type) 
{
    if (xmlhttp.readyState == 4) 
    {
       if(type=="a")
       {
            document.getElementById("a").innerHTML = xmlhttp.responseText;
       }
       if(type=="b")
       {
           document.getElementById("b").innerHTML = xmlhttp.responseText;
       }

    }
}

function load(frame, args,type) 
{
    if (xmlhttp) 
    { 
        xmlhttp.open("GET", "index.php?frame=" +frame +args, true);
        xmlhttp.onreadystatechange= new function()
 {
process(type);
}
        xmlhttp.send(null);
    }
}


Dit zou moetne werken...

Of niet natuurlijk...


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09-12-2025
@giMoz: Dan is dit nog makkelijker:
JavaScript:
1
2
3
4
5
6
7
function process(type) 
{
    if (xmlhttp.readyState == 4) 
    {
        document.getElementById(type).innerHTML = xmlhttp.responseText;
    }
}

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
Hacku schreef op maandag 20 maart 2006 @ 15:15:
Probeer dit eens:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function load(frame, args) 
{
    if (xmlhttp) 
    { 
        xmlhttp.open("GET", "index.php?frame=" +frame +args, true);
        xmlhttp.onreadystatechange = function() 
        {
          if (xmlhttp.readyState == 4) 
          {
             // de var frame moet je nu wel kunnen gebruiken
             document.getElementById("left").innerHTML = xmlhttp.responseText;
          }
        }
        xmlhttp.send(null);
    }
}


Overigens zou ik ipv innerHTML eens naar het DOM kijken. Dat is niet alleen netter, maar je kan er ook veel meer met doen.

Geen idee of dit werkt trouwens, ikzelf haal de doorgestuurde parameters altijd terug uit index.php met het DOM.
Dat werk inderdaad, bedankt! Ik gebruik AJAX trouwens alleen als een simpele vervanging voor frames in het beheer-deel van een site.

Verwijderd

Topicstarter
Nu heb ik nog 1 probleem, als ik load 2 keer aanroep (voor 2 verschillende onderdelen) in bijvoorbeeld onLoad, dan werkt het niet. Hoe kan ik ervoor zorgen dat de 2e load aanroept wacht tot de eerste klaar is? Want daar ligt het probleem als ik het goed is.

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09-12-2025
Je moet per request gewoon een nieuw XMLHttpRequest object aanmaken.

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
Is het dan goed om de creatie van dit object in de load functie te zetten of werkt dat niet?

Edit: Ik zal even een nieuw topic hierover maken want dit is een heel ander probleem.

[ Voor 33% gewijzigd door Verwijderd op 21-03-2006 12:11 ]

Pagina: 1