login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[AJAX] Request in een request

Offline Raze - 27/07/2010 15:51 (laatste wijziging 27/07/2010 15:52)
Avatar van RazePHP beginner Hallo,

ik haal dynamisch de content van een div op. In die content zit een formulier dan dmv AJAX verwerkt wordt.

Wat gebeurt er?
Wanneer ik de div "main" dynamisch wil vullen, verschijnt er eerst een ladertje totdat de div gevuld is. Dit werkt.
Dan druk ik op "submit" van het formulier. Die submit zo nu moeten veranderen in de tekst "laden", om dan uiteindelijk de div terug leeg te maken en daar te zetten "formulier verstuurd".

Hier loopt het echter fout  . Na het drukken op de submit, wordt de hele div wel leegmaakt, maar het is net alsof de response functie van de eerste AJAX-actie dan wordt herhaald, want dan komt opeens dat ladertje tevoorschijn (terwijl dat nergens in de 2de AJAX-actie gebruikt wordt).

Mijn code:

de pagina index.html
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Naamloos document</title>
  6. <script type="application/x-javascript" src="/ajax/requestobject.js"></script>
  7. <script type="application/x-javascript" src="/ajax/vuldiv.js"></script>
  8. <script type="application/x-javascript" src="/ajax/verstuurform.js"></script>
  9. </head>
  10.  
  11. <body>
  12. <a href="#" onclick="vuldiv();">Vul de div</a>
  13. <div id="main">
  14. </div>
  15. </body>
  16. </html>


De pagina formulier.html:
  1. [Hier staat het formulier dan]<br />
  2. <span class="veranderstatus"><input type="button" id="submit" onclick="sendform();" /></span>


De pagina vuldiv.js:
  1. function vuldiv()
  2. {
  3. http.open('get', 'formulier.html' );
  4. http.onreadystatechange = toondiv;
  5. http.send(null);
  6. }
  7.  
  8. function toondiv()
  9. {
  10. if(http.readyState == 4 && http.status == 200)
  11. {
  12. if(http.responseText)
  13. {
  14. document.getElementById('main').innerHTML = http.responseText;
  15.  
  16. }
  17. }
  18. else
  19. {
  20. document.getElementById('main') = "<img src=\"/ajax/loader.gif\" />";
  21. }
  22. }


De pagina verstuurform.js:
  1. function sendform()
  2. {
  3. http.open('get', 'verwerk.php' );
  4. http.onreadystatechange = verwerkform;
  5. http.send(null);
  6. }
  7.  
  8. function verwerkform()
  9. {
  10. if(http.readyState == 4 && http.status == 200)
  11. {
  12. if(http.responseText)
  13. {
  14. document.getElementById('main').innerHTML = http.responseText;
  15.  
  16. }
  17. }
  18. else
  19. {
  20. document.getElementById('veranderstatus') = "Laden";
  21. }
  22. }


verwerk.php is enkel een echo "Het formulier is verwerkt";

Waar zit de fout?

2 antwoorden

Gesponsorde links
Offline CDNC - 27/07/2010 16:20
Avatar van CDNC PHP ver gevorderde Heb je geen VB online? Ik vind het altijd wel fijn om op zo'n dingen firebug los te laten en kun je juist in welke sequentie er wat gebeurt...
Offline Martijn - 28/07/2010 00:27 (laatste wijziging 28/07/2010 00:28)
Avatar van Martijn Crew PHP voor dit soort dingen raad ik wel aan naar jQuery over te stappen daar is ajax vele malen simpeler.

Hiier de link naar de ajax functie, voor meerdere waardes (je formulier)


en hier de Load functie, makkelijk de waarde van een html/php bestand in een div zetten

Beide gevallen hebben voorbeeldjes als je wat lager scrolled. Je hoeft alleen maar hun bestnad op te slaan, en in je head erbij te zetten aols andere js bestanden en je kunt doen wat er staat
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.187s