[JS] DOM over XMLHttpRequest naar PHP

Pagina: 1
Acties:
  • 113 views sinds 30-01-2008
  • Reageer

  • b19a
  • Registratie: September 2002
  • Niet online
DOM, XML, AJAX, XMLHttpRequest... pff bomen - bos, anyone?

Goed, ik zal m'n probleem wat verduidelijken. Ik wil een "AJAX" (pff hypewoord) applicatie gaan maken. Nu zijn daar veel tutorials over te vinden van allerlei mensen die denken hier alles over te weten... maar ik heb nog geen enkele goede tutorial gezien over het verzenden van XML / DOM via XMLHttpRequest. Bij de meesten wordt het beperkt tot dit:
Java:
1
2
3
var request=new XMLHttpRequest();
request.open("POST","receive.php",true);
request.send("msgId=666");


Echter... wat ik wil is het volgende:
Java:
1
2
3
4
5
6
7
8
9
10
// Maak het XML DOM Document
xmlDoc=document.implementation.createDocument("", "", null);
rootElm=xmlDoc.createElement("root");
xmlDoc.appendChild(rootElm);

//verstuur m'n document
var request=new XMLHttpRequest();
request.setRequestHeader("Content-Type", "text/xml");
request.open("POST","mijn.php",true);
request.send(xmlDoc);

Vervolgens wil ik binnen PHP dit document binnenkrijgen, evt parsen, en dan lekker mee om kunnen knoeien. Is dit teveel gevraagd, of is het goed mogelijk met javascript?

[ Voor 16% gewijzigd door b19a op 10-09-2005 12:21 ]


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 09:30
Je zal dan XMLdoc moeten parsen naar XML. Dan kan je gewoon tekst overzenden.

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Heb je al eens gezocht hier bij GoT naar XMLHTTPRequest?

Enige tijd geleden heb ik nog een topic over XMLHTTPRequest geopend. chem had ook nog een topic geopend over responseverwerking. Verder was er onlangs nog een discussie over AJAX in P&W. Wellicht kan je in die draadjes nog kijken.

  • Johnny
  • Registratie: December 2001
  • Laatst online: 24-04 11:10

Johnny

ondergewaardeerde internetguru

Tenzij je echt specifieke XML dingen gaat versturen, zoals een boomstructuur kan je vaak veel handiger het net zo doen als bij een formulier zodat je gewoon de $_POST[] variablen in PHP kan uitlezen:

JavaScript:
1
2
3
4
5
6
7
8
var name = 'bla';
var message  = 'blabla';

req.open('post', 'auction.php?id='+previewI, true);
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');

        var s = 'name=' + name + '&message=' + message;
        req.send(s);


Als je de tekst direct uit een formulier haalt zul je ook nog even encodeURIComponent(() (in JS) moeten gebruiken om te zorgen dat de vreemde tekens goed worden doorgegeven en rawurldecode() in PHP.

[ Voor 8% gewijzigd door Johnny op 09-09-2005 21:50 ]

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


  • b19a
  • Registratie: September 2002
  • Niet online
djluc schreef op vrijdag 09 september 2005 @ 21:17:
Je zal dan XMLdoc moeten parsen naar XML. Dan kan je gewoon tekst overzenden.
Heb je m'n post wel gelezen?
Woudloper schreef op vrijdag 09 september 2005 @ 21:36:
Heb je al eens gezocht hier bij GoT naar XMLHTTPRequest?

Enige tijd geleden heb ik nog een topic over XMLHTTPRequest geopend. chem had ook nog een topic geopend over responseverwerking. Verder was er onlangs nog een discussie over AJAX in P&W. Wellicht kan je in die draadjes nog kijken.
Mjah... ik wil juist die andere kant op Client->Server, jij hebt 't in dat topic over Server->Client... een heel ander principe dus!
Johnny schreef op vrijdag 09 september 2005 @ 21:48:
Tenzij je echt specifieke XML dingen gaat versturen, zoals een boomstructuur kan je vaak veel handiger het net zo doen als bij een formulier zodat je gewoon de $_POST[] variablen in PHP kan uitlezen:

JavaScript:
1
(..)


Als je de tekst direct uit een formulier haalt zul je ook nog even encodeURIComponent(() (in JS) moeten gebruiken om te zorgen dat de vreemde tekens goed worden doorgegeven en rawurldecode() in PHP.
Ja dat is een mogelijkheid, maar het gaat hier juist WEL om een boomstructuur, ik zoek dus om een manier om deze "simpel" door te geven aan PHP via XML.

  • Priet
  • Registratie: Januari 2001
  • Laatst online: 30-04 09:15

Priet

To boldly do what no one has..

De XML coderen met BASE64 en verzenden als één parameter?

Zomaar een ideetje...

[ Voor 5% gewijzigd door Priet op 09-09-2005 23:44 ]

"If you see a light at the end of a wormhole, it's probably a photon torpedo!"


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:12

crisp

Devver

Pixelated

Een XML DOM object is enkel een in-memory boomstructuur. XML zelf is een markup language, en is dus feitelijk een string. Wat je moet doen is je XML DOM structuur serializen naar een string, en die doorsturen. In Gecko kan je hiervoor de XMLSerializer gebruiken die een serializeToString() method heeft, in IE kan je de xml property van het xmlDOMDocument uitlezen.

Intentionally left blank


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 09:30
Ja, jij mijn post? Je kunt niet zomaar een object verzenden. Je moet dit eerst omzetten, lees parsen o.i.d., naar XML. Je kan het ook zien als bijvoorbeeld serializen zoals Crisp het hierboven aanraad.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:12

crisp

Devver

Pixelated

parsen is niet het goede woord; je parsed een markup representatie naar een object, andersom heet het serializen naar een portable formaat ;)

Intentionally left blank


  • b19a
  • Registratie: September 2002
  • Niet online
Goed, dank u allen voor de moeite! :)

Java:
1
2
3
4
var xrequest=new XMLHttpRequest();
xrequest.open("POST","receive.php",false);
xrequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8")
xrequest.send("blaat="+Sarissa.serialize(xmlDoc));


Sarissa is een library, gebruik google voor meer informatie hierover.

[ Voor 106% gewijzigd door b19a op 10-09-2005 12:21 ]

Pagina: 1