XML file aanmaken via javascript
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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);
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);
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 03/09/2018 14:30:17 door - Ariën -
https://stackoverflow.com/questions/14340894/create-xml-in-javascript
Daar staat dat er 3 mogelijkheden zijn. Je moet ze dus niet alle 3 gebruiken, maar eentje kiezen (al naar gelang je situatie).
Dus: wat is je situatie? Wat wil je bereiken:
- informatie van de client (browser) naar server/service sturen
- informatie van server/service downloaden
Overigens is JSON voor dit soort zaken veel gangbaarder (en veel eenvoudiger).
Zo te zien heb je deze gevonden: Daar staat dat er 3 mogelijkheden zijn. Je moet ze dus niet alle 3 gebruiken, maar eentje kiezen (al naar gelang je situatie).
Dus: wat is je situatie? Wat wil je bereiken:
- informatie van de client (browser) naar server/service sturen
- informatie van server/service downloaden
Overigens is JSON voor dit soort zaken veel gangbaarder (en veel eenvoudiger).
Ik heb een label met text en als daar opgelikt wordt moet hij een xml file aan gaan maken met de text van het label in de naam van het file.
Dit is mijn php gedeelte:
echo "<label onclick='myfunction(".$myvar.")' name='label' id='label".$myvar."'>$value</label>";
Dus zodra ik op de label klik moet hij met $value een xml document aanmaken
-> Als het iets heel simpels is kun je ook gewoon een beetje knippen & plakken met "tekst".
En waar moet het naar toe?
-> Naar de server, naar een service?
-> Is het wel nodig om dit via XML te doen, of kun je ook de kale waarde doorgeven, of bijvoorbeeld via JSON?
In het javascript gehaald maak ik het xml file aan. Hij moet dat het bestaand aanmaken met 2 variabelen en dan de nodes aanmaken en hier een text inzitten. Bij een volgende pagina wil ik dat xml bestand weer oproepen en lees en ik schreef ik hieruit
Als je het wilt schrijven naar de server, dan moet je toch echt met een serverside-programmeertaal aan de slag, zoals PHP. JavaScript zelf is client-side. Het zou wel kunnen met Node.JS, maar dan praten we over een andere opbouw en een andere techniek.
Ja met PHP lukt het, maar hij moet het xml file pas aanmaken zodra ik op het label klik. Hoe ik het had bij de php maakt hij het meteen aan in de foreach loop. Maar het probleem is met php kan ik de variable niet aan van de laan
Je kan toch met AJAX een PHP-script oproepen, zodra je een onclick doet?
Het is ff geleden sinds dat ik heb gecodeerd
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
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();
xhttp.onreadystatechange = function()
{
if (xhttp.readyState == 4 && xhttp.status == 200)
{
var xmlDoc = xhttp.responseXML;
}
}
xhttp.open("GET", "chatuser.xml", true);
xhttp.send();
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 03/09/2018 15:29:45 door - Ariën -
Waarom wil je het XML-bestand aanmaken via JavaScript. Het is enkel leuk voor als je het direct wilt zien, maar omdat het enkel bij de client bestaat, heeft het eigenlijk naar mijn idee op deze manier weinig meerwaarde. Of gebruik je soms NodeJS of een andere socket?
nee die gebruik ik niet. zodra bij onclick moet dat bestand gemaakt worden en in de website server directory opgeslagen worden. bij de pagina dit na de onclick wordt geladen moet dit bestand weer opgeroepen worden en ook naar geschreven worden
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.
Toevoeging op 03/09/2018 16:32:05:
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 = "
<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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?
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();
?>
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();
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
$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);
?>
$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);
?>
Gewijzigd op 03/09/2018 17:08:36 door Ilse Callen
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
Ik raad aan om volledige PHP-tags te gebruiken, en geen shorttags. Die laatste kunnen worden uitgezet waarna je source opeens zichtbaar wordt.
Gewijzigd op 03/09/2018 17:37:56 door - Ariën -
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
$selecteduser ";
$file = "chatuser ".$selecteduser." ".$_SESSION['username'].".xml";
$dom = new DOMDocument();
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($xmlstring); $dom->save($file); ?>
$selecteduser ";
$file = "chatuser ".$selecteduser." ".$_SESSION['username'].".xml";
$dom = new DOMDocument();
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($xmlstring); $dom->save($file); ?>
>?
Toevoeging op 03/09/2018 17:47:25:
hij echo'd de code gewoon zeg maar
Toevoeging op 03/09/2018 17:50:05:
eerst had ik dat xml gedeelte in de foreach loop zitten en dat deed hij wel
Code (php)
Gewijzigd op 03/09/2018 17:47:01 door Ilse Callen
Gebruik de normale PHP-tags.
hoe bedoel je normale php-tags?