Hallo allemaal,

Al geruime tijd zit ik te klooien met een ajax probleempje. De waarde die wordt bepaald wordt namelijk niet getoond in de pagina.

Het gaat om een ajax aanroep waarin een berekening wordt gedaan met 2 waardes, het resultaat wordt weggeschreven in de database en moet worden getoond op het scherm. Het wegschrijven werkt prima, het tonen lijkt af en toe wel te werken maar meestal niet.

Kan iemand aangegeven waarom de waarde niet wordt bijgewerkt in de pagina?

PS. als er al een waarde in de database staat wordt deze initieel netjes weergegeven, na het aanroepen van de ajax routine is het veld leeg. Zoals gezegd wordt de database waarde wel bijgewerkt.

Zie hieronder voor de code waar het om gaat.

Het code deel uit de php pagina: (het PHP deel plaatst de reeds aanwezige waarde uit de databse, bijvoorbeeld bij heropenen van de pagina)

<td class=tekst><div id="KrachtTOT" class=tekst><?php echo $antwoorden[krachtTOT]; ?></div></td>


De javascript functie:

if (KrachtLI != 0 && KrachtRE != 0)
	{	
		xmlHttp=GetXmlHttpObject()
		if (xmlHttp==null)
		  { alert ("Your browser does not support AJAX!"); return; } 
// Kracht totaal berekenen bepalen
		var url="ajax_scripts/kracht.php";
		url=url+"?q="+KrachtLI;
		url=url+"&r="+KrachtRE;
		url=url+"&t="+testpersoon;
		url=url+"&g="+geslacht;
		url=url+"&l="+leeftijd;
		url=url+"&sid="+Math.random();
		xmlHttp.onreadystatechange=ReturnKracht;
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
//							  { alert ("hier komt ie!"); return; } 
	}
} 


En de php pagina die wordt aangeroepen via ajax:

<?php
header("Cache-Control: no-cache, must-revalidate");
 // Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

$krachtli=$_GET["q"];
$krachtre=$_GET["r"];
$TestpID = $_GET["t"];
$geslacht = $_GET["g"];
$leeftijd = $_GET["l"];

// bepalen kracht totaal
$krachttot= $krachtli + $krachtre;

include '../library/config.php';
include '../library/opendb.php';

// krachttotaal opslaan in de database
	$query = "UPDATE td_ftod SET kracht_tot = '$krachttot' WHERE TestpID = '$TestpID'";
	mysql_query($query) or die('Error : ' . mysql_error());

include '../library/closedb.php';


$response=$krachttot;
echo $response;
?>


Installeer Firebug voor FireFox en zet deze aan op de pagina waar de AJAX request wordt verstuurd en terugkomt. Kijk wat deze aangeeft zodra je de request verstuurd.
Na een drukke week eindelijk weer eens tijd om hier mee verder te gaan. Firebug geinstalleerd en deze geeft netjes aan de de waarde terugkomt. Getoond wordt ie nog steeds niet. Iemand nog een idee?

PS. hoe krijg ik de code netjes als code getoond...dacht dat dat <code></code> was maar schijnbaar niet dus
Je script in je post is nu niet echt leesbaar. Pas je post even aan en gebruik [ignore]
 en 
[/ignore] tags om je code heen. Om php code zet je uiteraard dit:<?php en ?>Gebruik je knop om dit te doen.

SanThe.
Misschien de include voor het setten van de variablen zetten en de closelibary na de ech doen?
@SanThe, dat was het dus [] ipv <>, bedankt, is aangepast

@Wim, zelfde resultaat. Had me ook verbaasd, die volgorde zou niet uit mogen maken toch. De response wordt ook wel teruggeven door de php file want ik zie de waarde wel in firebug.

zag dat ik het return script in javascript niet opgenomen had, het lijkt mij dat daar de fout zit, of bij het plaatsen op de pagina (eerste codeblok in eerste forum post)


function ReturnKracht() 
{	if (xmlHttp.readyState==4)
	{	document.getElementById("KrachtTOT").innerHTML=xmlHttp.responseText; }
}
bump

Heeft iemand een idee waarom de response niet wordt weergegeven in de pagina?

Alvast bedankt.
Probleem opgelost.

In de aanroep van de functie (een onchange event) werden 2 ajax functies aangeroepen. Deze zaten elkaar in de weg waardoor de response verkeerd ging.

Reageren