Hallo,

Ik probeer een xml bestand aan te maken via javascript. De naam van het bestand moet gemaakt worden in de javascript functie maar hij blijft iedere keer zeggen dat het bestand niet bestaat. Ik kan op internet niet goed vinden wat ik verkeerde doe. Dit is de code dit ik op internet heb gevonden en die heb ik aangepast naar mijn eigen code. Achter chatuser.xml moeten de namen komen van diegene die in de chat zit.

Dit is mijn code. Alvast bedankt.

var xmlDoc = document.implementation.createDocument("chatuser.xml", "user");

			var xhttp = new XMLHttpRequest();
			xhttp.onreadystatechange = function() 
			{
				if (xhttp.readyState == 4 && xhttp.status == 200) 
				{
					var xmlDoc = xhttp.responseXML;
				}
			}
			xhttp.open("GET", "chatuser.xml", true);
			xhttp.send();
		
			var xmlString = "<user></user>";
			var parser = new DOMParser();
			var xmlDoc = parser.parseFromString(xmlString, "text/xml"); //important to use "text/xml"
			
			var node = xmlDoc.createElement("active");
			var elements = xmlDoc.getElementsByTagName("user");
			elements[0].appendChild(node);

Dan heb je weinig aan je JavaScipt oplossing. je zult dan hoogstens met JavaScript een AJAX request kunnen doen, waarna je met PHP, en dan met name met SimpleXML of DOMdocument je XML bouwt.
ah ja dat stuk met dat was al wel gelukt maar ik kreeg het niet voor elkaar met de xmlhttprequest

[size=xsmall]Toevoeging op 03/09/2018 16:32:05:[/size]

ik heb het nu op deze manier. Maar hij doet er verder niks mee. hij maakt het bestand niet aan.

Javascript stuk:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
if (xhttp.readyState == 4 && xhttp.status == 200)
{
var xmlDoc = xhttp.responseXML;
}
}
xhttp.open("GET", "chatxml.php?user=" + user, true);
xhttp.send();

chatxml.php $selecteduser = $_GET["user"];

$xmlstring = "<?xml version='1.0' encoding='UTF-8'?>
<users>
<active>$selecteduser</active>
</users>";
$file = "chatuser ".$selecteduser." ".$_SESSION['username'].".xml";
$dom = new DOMDocument();
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($xmlstring);
$dom->save($file);
Gelieve code-tags te gebruiken, zoals in de de 'mod-break staat'. Dat maakt het beter leesbaarder.
<?
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
if (xhttp.readyState == 4 && xhttp.status == 200)
{
var xmlDoc = xhttp.responseXML;
}
}
xhttp.open("GET", "chatxml.php?user=" + user, true);
xhttp.send();
?>

<?
$selecteduser = $_GET["user"];

$xmlstring = "
<?xml version='1.0' encoding='UTF-8'?>

<users>
<active>$selecteduser</active>
</users>";
$file = "chatuser ".$selecteduser." ".$_SESSION['username'].".xml";
$dom = new DOMDocument();
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($xmlstring);
$dom->save($file);
?>
Werkt het PHP-bestand wel als je die aanroept?
deze code deed ik voorheen in het bestand zelf bij de foreach loop en daar werkte hij gewoon. Ik had net ook een alert in the readystate if gezet en die werd gewoon getoond
Maar wat geeft het PHP-script terug als je die die uitvoert?

Ik raad aan om volledige PHP-tags te gebruiken, en geen shorttags. Die laatste kunnen worden uitgezet waarna je source opeens zichtbaar wordt.
als ik bij onclick de pagina door laat verwijzen naar chatxml.php krijg ik dit
<?
$selecteduser ";
$file = "chatuser ".$selecteduser." ".$_SESSION['username'].".xml";
$dom = new DOMDocument();
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($xmlstring); $dom->save($file); ?>
>?

[size=xsmall]Toevoeging op 03/09/2018 17:47:25:[/size]

hij echo'd de code gewoon zeg maar

[size=xsmall]Toevoeging op 03/09/2018 17:50:05:[/size]

eerst had ik dat xml gedeelte in de foreach loop zitten en dat deed hij wel
<?
while($users = mysqli_fetch_assoc($result))
{
foreach ($users as $value)
{
if ($value != $_SESSION["username"])
{
echo "<label onclick='Chatuser(".$count.")' name='newchat' id='newchat".$count."'>$value</label>";
echo "<br>";

$count = $count + 1;
}
}
}
>
Klopt....
Gebruik de normale PHP-tags.
hoe bedoel je normale php-tags?

Reageren