div refresh na submit
Ik zit met een klein probleempje waar ik niet uit kom
Ben niet zo thuis is javascript.
ik werk met 2 talen. Nederlands en Engels.
Maar als ik op Nederlands druk dan gebeurt er niks tenzij ik de page refresh,
dan staat de taal op Nederlands. dit moet ik elke keer doen.
Ik begreep dat je met javascript/ajax dit probleem kunt verhelpen.
Nu heb ik dit van w3c schools afgehaald.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("loginregister").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","lang.thom",true);
xmlhttp.send();
}
</script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("loginregister").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","lang.thom",true);
xmlhttp.send();
}
</script>
en in mijn register staat het form
Code (php)
1
2
3
4
2
3
4
<form method="post" action="">
<input type="submit" name="NL" onclick="loadXMLDoc" value="nederlands">
<input type="submit" name="ENG" onclick="loadXMLDoc" value="engels">
</form>
<input type="submit" name="NL" onclick="loadXMLDoc" value="nederlands">
<input type="submit" name="ENG" onclick="loadXMLDoc" value="engels">
</form>
En in mijn lang staat dit
Code (php)
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['NL']))
{
setcookie("taal", "NL",time()+3600, "/");
//echo '<meta http-equiv=refresh content=0;URL= />';
}
elseif(isset($_POST['ENG']))
{
setcookie("taal","ENG", time()+3600, "/");
//echo '<meta http-equiv=refresh content=0;URL= />';
}
}
if($_COOKIE["taal"] == "NL")
{
include("taal/nl.thom");
}
elseif
($_COOKIE["taal"] == "ENG")
{
include("taal/eng.thom");
}
else
{
include("taal/nl.thom");
}
echo var_dump($_POST);
?>
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['NL']))
{
setcookie("taal", "NL",time()+3600, "/");
//echo '<meta http-equiv=refresh content=0;URL= />';
}
elseif(isset($_POST['ENG']))
{
setcookie("taal","ENG", time()+3600, "/");
//echo '<meta http-equiv=refresh content=0;URL= />';
}
}
if($_COOKIE["taal"] == "NL")
{
include("taal/nl.thom");
}
elseif
($_COOKIE["taal"] == "ENG")
{
include("taal/eng.thom");
}
else
{
include("taal/nl.thom");
}
echo var_dump($_POST);
?>
Zoals jullie zien heb ik de refresh uitgeschakeld in de hoop dat ie mijn div refresht maar dat doet ie niet.
Hoe kan ik dit op lossen.
Met vriendelijke groet,
Thomas de vries.
Je kan toch gewoon de complete pagina verversen via een formulier. Dan heb je geen javascript en ajax nodig.
ja maar in FF is het wel mooi maar in IE laad ie de page 2x dus zat ik met een div refresh vindt ik persoonlijk ook mooier
hoezo laadt ie de pagina 2x?
Toevoeging op 10/02/2011 10:31:40:
dat is als die meta refresh aan staat.
console.log(xmlhttp.responseText);
Dit geeft een mooie melding in de console van firebug (je kan natuurlijk ook een alert gebruiken maar.. wie vind een alert nou mooi?)
Dan weet je precies wat er word teruggegeven en dus ook waar het probleem zit (php of js)
Verder valt het mij op dat je je bericht naar lang.thom stuurt en ik zo niet zie waar je de waarde ervoor meegeeft? (de taal in de post) Als er op een knop gedrukt word moet de functie loadXMLDoc uitgevoerd worden, maar je geeft geen () mee. Dit is slordig.
Tot slot vergeet je een return false mee te geven. Als er op een knop word gedrukt (welke een submit is) word eerst de onclick uitgevoerd en daarna het formulier verstuurd. Verander de submits in buttons of voeg aan het einde van de functie een 'return false;'
Beide blokkeren de normale form functies zodat de ajax als enige word uitgevoerd.
Ik zal is kijken naar return false.
Thnx voor het meedenken