ubuntuusers.de

JavaScript/XML: Daten schreiben

Status: Ungelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

Z0M813

Anmeldungsdatum:
29. Januar 2012

Beiträge: Zähle...

Hallo,

hier habe ich mein nächstes Problem 😉 . Wie ich in dem anderen Thema schon geschrieben habe, lasse ich mir mit JavaScript eine XML-Datei auslesen. Dabei gehe ich nach diesem Tutorial vor. Jetzt würde ich auch gerne etwas abspeichern. Google konnte mir dazu nicht viel sagen...

In dem Tutorial wird ja so ausgelesen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","cd_catalog.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

Jetzt habe ich mir überlegt, dass zum Schreiben in die Datei sowas ähnlich kommen muss, nur mit "set" statt "get" und so. Liege ich damit richtig? Wie muss das denn aussehen?

posti

Anmeldungsdatum:
30. März 2009

Beiträge: 2087

Hi

Such mal nach 'PUT' als Gegenteil von GET - spukt mir gerade im Kopf rum

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: Zähle...

Wohnort: Hamburg

Wie ich Dir in dem bisher nicht verlinkten Thread (!) schon schrieb, kann man mittels JS im Browser keine lokalen IO-Operationen durchführen - Du kannst eben nur mittels HTTP mit einem Server kommunizieren.

Du willst ja sogar Dinge auf einem Server speichern, wozu Du eine Server-Komponente benötigst. Ich fragte Dich ja auch schon danach und gab Dir einen Tipp dazu...

Ich habe so das dumpfe Gefühl, dass Du Dir bisher viel zu wenig Wissen über den grundlegenden Technologie-Stack rund um die Webentwicklung angeeignet hast. Das solltest Du mal nachholen 😉

theinlein

Anmeldungsdatum:
29. Dezember 2007

Beiträge: 1279

Hi,

es gibt kein Lesen und Schreiben in eine Datei. Es gibt nur ein Request an den Server (mit Parametern) und ein Lesen der Response des Servers (kein PUT).

Wenn du Daten (auf dem Server) schreiben willst, dann sind das Parameter des Requests. Das Script auf der Server-Seite nimmt diese Daten und schreibt diese.

Das hat aber nichts mehr mit JavaScript im Client zu tun. Da musst du dir für den Server was schreiben (z.B. PHP?)

Also, der XML-Request ist genau so, wie du im Beispiel gepostest hast - nach wie vor.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: Zähle...

Wohnort: Hamburg

theinlein schrieb:

Das hat aber nichts mehr mit JavaScript im Client zu tun. Da musst du dir für den Server was schreiben (z.B. PHP?)

Naja, ich nannte ihm ja schon Node.js, damit er bei JavaScript bleiben kann - man muss ihm ja nicht gleich eine fürchterliche Sprache empfehlen; auch wenn PHP seine späteren Jünger augenscheinlich aus genau solch unwissenden Leuten rekrutiert 😈

Z0M813

(Themenstarter)

Anmeldungsdatum:
29. Januar 2012

Beiträge: 132

Das mit dem mangelnden Fachwissen stimmt wohl 😳 .

Was brauche ich denn alles, um vom Client ein paar Daten zum Server zu übermitteln? Es ist ja bloß Text, keine Bilder oder so.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Z0M813 schrieb:

Was brauche ich denn alles, um vom Client ein paar Daten zum Server zu übermitteln? Es ist ja bloß Text, keine Bilder oder so.

Am einfachsten wäre es wohl, jQuery dafür zu nutzen.

Aber Dein Hauptproblem ist nach wie vor die Server seitige Logik 😉

Z0M813

(Themenstarter)

Anmeldungsdatum:
29. Januar 2012

Beiträge: 132

Was ich bis jetzt zu jQuery gelesen habe, scheint mir jQuery dabei aber auch nicht zu helfen. Vielleicht ist mein Problem aber auch noch nicht ganz klar. Dann mal hier mein Problem etwas vereinfacht. Man kann sich z.B. ein Gästebuch vorstellen:

  • Auf dem Server ist eine HTML- und eine XML-Datei.

  • Die HTML-Seite soll anzeigen, was in der XML-Datei steht. (natürlich anders formatiert)

  • Der Betrachter der HTML-Seite soll Informationen eingeben können, die dann in die XML-Datei geschrieben werden, damit sie der nächste Besucher sehen kann.

(Mit Informationen meine ich natürlich keine Kontodaten oder so, sondern eher sowas wie Kommentare.)

Vielleicht ist die Lösung meines Problems ja doch nicht so kompliziert?

PS: Meinetwegen kann auch nodeJS zum Einsatz kommen. Haupsache ist, dass es funktioniert.

theinlein

Anmeldungsdatum:
29. Dezember 2007

Beiträge: 1279

Hi,

egal ob JavaScript oder ohne, mit jQuery oder ohne ...

Du solltest dich erst mal damit beschäftigen, wie HTML-Formulare funktionieren. Das ist im ersten Ansatz einfacher, vor allem wirst du den Zusammenhang auf der Serverseite verstehen lernen. z.B. kannst du das unter selfhtml.org nachlesen

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

Z0M813 schrieb:

Was ich bis jetzt zu jQuery gelesen habe, scheint mir jQuery dabei aber auch nicht zu helfen. Vielleicht ist mein Problem aber auch noch nicht ganz klar. Dann mal hier mein Problem etwas vereinfacht. Man kann sich z.B. ein Gästebuch vorstellen:

  • Auf dem Server ist eine HTML- und eine XML-Datei.

Nee, eigentlich willst Du die HTML-Datei aus der XML-Datei generieren lassen - am besten on the fly, d.h., wenn ein Request kommt. Mir ist allerdings nicht klar, wieso Du die Daten in XML speichern willst. Meist benutzt man dafür eine Datenbank - entweder relational oder NoSQL, das hängt von den Daten ab. Prinzipiell kann man natürlich auch eine XML-Datei nutzen, die ist aber von der Handhabung umständlicher, weil Du ja immer das ganze Teil lesen und schreiben musst, selbst wenn nur eine Zahl geändert werden soll.

  • Die HTML-Seite soll anzeigen, was in der XML-Datei steht. (natürlich anders formatiert)

  • Der Betrachter der HTML-Seite soll Informationen eingeben können, die dann in die XML-Datei geschrieben werden, damit sie der nächste Besucher sehen kann.

Also ist Deine HTML-Datei ein Formular mit Eingabefeldern.

Vielleicht ist die Lösung meines Problems ja doch nicht so kompliziert?

PS: Meinetwegen kann auch nodeJS zum Einsatz kommen. Haupsache ist, dass es funktioniert.

Vielleicht willst Du auch einfach ein Content-Management-System nehmen. Da Du noch nicht so viel dazu gesagt hast, was Deine Anwendung machen soll (jetzt und geplanter späterer Ausbau), ist es schwierig, genaue Tipps zu geben.

Ciao

robert

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

rklm schrieb:

Da Du noch nicht so viel dazu gesagt hast, was Deine Anwendung machen soll (jetzt und geplanter späterer Ausbau), ist es schwierig, genaue Tipps zu geben.

Also eines kann man schon sagen: Der bisherige Ansatz war so ziemlich für die Katz 😀 (außer, dass der OP ein wenig JS gelernt hat)

@ZOM813: Du musst erst einmal die Grundlagen von Webtechnologien und der einhergehenden Architekturen verstehen! Du hast bisher nur Client seitig gearbeitet - das kannst Du letztlich alles wegwerfen, weil Du für Dein Vorhaben keinen Code brauchst auf der Client Seite (= im Webbrowser).

Dein Vorhaben benötigt Code auf der Server Seite! Dafür habe ich Dir Node.js schon genannt; k.A. ob und welche alternativen Rahmenwerke es für JavaScript in dem Bereich noch gibt. Damit kannst Du grob gesagt das erledigen, was sonst klassische andere Programmiersprachen im Webbereich leisten: Auf Requests des Clients reagieren und entsprechend antworten.

Bei Dir sähe das so aus:

# Gästebuch angucken:
Browser (Client) -> Request -> (Node.js (Server) -> XML parsen -> HTML generieren -> Response) -> Browser
# Eintrag senden:
Browser -> Request [POST] -> (Node.js -> XML parsen -> Knoten einfügen -> XML speichern & HTML generieren -> Response) -> Browser

Wie Du siehst findet im Client nichts "katives" statt - man kann das ein oder andere natürlich via AJAX und jQuery pimpen, notwendig ist das aber nicht. Reines, statisches HTML reicht da aus.

Wenn man aber eh schon auf so viel JavaScript setzt, würde ich vermutlich das klassische Rendern in den Client verlagern und nur JSON zwischen Client und Server senden. Dieses kann man dann auch gleich prima als Backend nutzen - wenn man keine DB wie rklm es ansprach - nutzen will.

Alternativ setzt man gleich auf MongoDB als Datenbank und verzichtet komplett auf eine separate Serverkomponente; dafür gibt es iirc eine JavaScript-API.

Wie man moderne Webapps entwickeln kann, betrachtet Mitsuhiko (alias Armin Ronacher) hier in seinem Blog: Battlelog

Z0M813

(Themenstarter)

Anmeldungsdatum:
29. Januar 2012

Beiträge: 132

Lysander schrieb:

Alternativ setzt man gleich auf MongoDB als Datenbank und verzichtet komplett auf eine separate Serverkomponente; dafür gibt es iirc eine JavaScript-API.

Wie meinst Du "auf eine separate Serverkomponente verzichten"? Wie sieht denn da der Ablauf aus? Wird das dann einfacher?

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Z0M813 schrieb:

Wie meinst Du "auf eine separate Serverkomponente verzichten"?

Da MongoDB (oder war es CouchDB?) eine JS-API mittels HTTP zur Verfügung stellt, kannst Du also von der Client Seite aus *alles* erledigen. Das Speichern und Laden aus dem Datenbackend übernimmt dann komplett MongoDB.

Wie sieht denn da der Ablauf aus? Wird das dann einfacher?

Kommt auf den Standpunkt / die Erfahrung an. Da Dir immer noch nicht klar ist, wie HTTP funzt und wie Client und Server zusammenspielen, welche Restriktionen es bei JS Client seitig und generell gibt usw., ist das gesamte Unterfangen sicherlich nicht einfach. Ohne Basics wird das alles nicht...

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

Da MongoDB (oder war es CouchDB?) eine JS-API mittels HTTP zur Verfügung stellt, kannst Du also von der Client Seite aus *alles* erledigen. Das Speichern und Laden aus dem Datenbackend übernimmt dann komplett MongoDB.

Es ist CouchDB - bzw. das kann es auf jeden Fall. K.A., ob MongoDB das auch kann - nutze ich nicht...

Was man dafür braucht ist CouchApp 🇬🇧. Setzt im Hintergrund auf Python (eine vernünftige Sprache 😀) und JS-seitig auch auf JQuery.

Gruß, noisefloor

Z0M813

(Themenstarter)

Anmeldungsdatum:
29. Januar 2012

Beiträge: 132

Geht das denn mit CouchDB einfacher? Oder muss ich dazu dann auch noch Python können?

Antworten |