XMLHttpRequest GET en POST

Status
Niet open voor verdere reacties.

Arnold77

Gebruiker
Lid geworden
4 mrt 2008
Berichten
7
Goedemiddag allemaal,

Wie kan mij helpen met het volgende. Ik ben bezig met een website maken die gebruik maakt van XMLHttpRequest. Aangezien ik bijna geen verstand heb van javascript, stuit ik dus tegen het volgende aan.

Ik heb een script gevonden op het internet die via de GET methode een pagina laadt in een div. Dit werkt overigens goed.

Voorbeeld van het script:
Code:
<script> 
function get_file(url, target) 
{ 
document.getElementById(target).innerHTML ='<table width="100%"><tr><td align="right"><img src="layout/loading.gif">&nbsp;</td></tr></table>'; 
if (window.XMLHttpRequest) 
{ 
req = new XMLHttpRequest(); 
} 
else if (window.ActiveXObject) 
{ 
req = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
if (req != undefined) 
{ 
req.onreadystatechange = function() 
{ 
get_fileDone(url, target); 
}; 
req.open("GET", url, true); 
req.send(""); 

} 
} 

function get_fileDone(url, target) 
{ 
if (req.readyState == 4) 
{ // only if req is "loaded" 
if (req.status == 200) 
{ // only if "OK" 
document.getElementById(target).innerHTML = req.responseText; 
} 
else 
{ 
document.getElementById(target).innerHTML=" get_file Error:\n"+ req.status + "\n" +req.statusText; 
} 
} 
}// 
</script>
De pagina wordt aangeroepen via een link ( onclick="location.href='javascript:load(\'content.php?Load=Contact\')'" )

Dit werkt goed, tot nu toe geen probleem. Maar als ik een contactpagina laadt in de div en ik wil deze submitten, dan worden de waardes niet mee gezonden. Het is dus de bedoeling dat als er iemand op submit klikt, dat het formulier dan verwerkt wordt (dit gebeurd overigens dmv php) in dezelfde div die ik hierboven heb aangeroepen zonder dat de pagina weer helemaal opnieuw gaat laden. Is er iemand die mij kan vertellen hoe ik dit kan oplossen.

Alvast vriendelijk bedankt voor de moeite.
 
Laatst bewerkt door een moderator:
Dan komt omdat je de pagina in een andere letterlijk laad en waarschijnlijk de action van het formulier leeg hebt.

Als je bij het formulier even als action de juiste url meegeeft (Ik denk dat het deze is "content.php?Load=Contact") en je hebt in die pagina ook de verwerking dan moet het goed komen.
 
Dan komt omdat je de pagina in een andere letterlijk laad en waarschijnlijk de action van het formulier leeg hebt.

Als je bij het formulier even als action de juiste url meegeeft (Ik denk dat het deze is "content.php?Load=Contact") en je hebt in die pagina ook de verwerking dan moet het goed komen.


Dat had ik ook, maar omdat ik de actie via onclick="location.href='javascript:load(\'content.php?Load=Contact\')'" aanroep dan wordt ook automatisch het script aangeroepen wat hierboven staat, ik denk dat het script een combinatie moet worden van Get en Post methode, maar weet alleen niet hoe ik dit moet realiseren.
 
Als die action niet werkt dan heb je de implementatie verkeerd.

Als je naar onderstaand script refereerd in een action dan krijg je als output:Formulier verwerkt

verwerk.php
PHP:
<?php
if(isset($_POST['submit'])) {
  echo 'Formulier verwerkt';
} else {
?>
<form action="verwerk.php" method="post">
<input type="text" name="naam" />
<input type="submit" name="submit" value="Verzenden" />
</form>
<?php
}
?>
 
Als die action niet werkt dan heb je de implementatie verkeerd.

Als je naar onderstaand script refereerd in een action dan krijg je als output:Formulier verwerkt

verwerk.php
PHP:
<?php
if(isset($_POST['submit'])) {
  echo 'Formulier verwerkt';
} else {
?>
<form action="verwerk.php" method="post">
<input type="text" name="naam" />
<input type="submit" name="submit" value="Verzenden" />
</form>
<?php
}
?>

Dat klopt, dit is ook de werkwijze die ik normaal hanteer, maar omdat ik nu gebruik van XMLHttpRequest dan wordt verwerk.php geladen zoals normaal een pagina wordt geladen en niet in de div die daar voor bedoelt is.
 
Je zou dan de methode van het formulier op get kunnen zetten.

Kijk anders of je uit de voeten kunt met deze code (iets naar beneden scrollen).

Die schijnt via de post-methode te werken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan