JavaScript Daten an Server schicken (nodejs)?
Hi,
ich habe in meiner js-Datei in der var "myDeviceData" eine Hand voll Daten, die ich gerne an die serverseitige js-Datei schicken möchte, nur weiss ich nicht wie (falls im Titel nicht aufgefallen und die ersten anfangen zu schreiben "dafür brauchst du php, geht nicht mit js", ich benutze NodeJS).
js Snippet
var myDeviceData = dataCollectorInstance.deviceData;
Und den Inhalt der var "myDeviceData" soll halt an den Server gelangen. Beim ganzen Recherchieren bin ich darauf gestoßen, dass das wohl mit einer http request gehen soll, weiss aber nicht, wie genau ich das machen soll. Wie z.B. gebe ich an, an welche Datei das Ganze geschickt werden soll, wie sieht der Aufbau aus? etc ...
Danke im Voraus. =)
3 Antworten
![](https://images.gutefrage.net/media/user/kingbongo/1487866568507_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.jpg?v=1487866569000)
Du brauchst kein Express dafür. Einfach den XHR POST Request serverseitig annehmen, die empfangenen binary chunks in string wandeln, zwischenspeichern und am Ende daraus eine JSON kodieren:
/**
* POST /to-some-path
*/
var http = require('http');
var url = require( "url" );
http.createServer(
function (req, res) {
var path = url.parse(req.url).pathname;
var body = "";
if(path == "/to-some-path") {
req.on('data', function(data) {
body += data.toString(); //convert every reveived chunk to string and append to body var
});
req.on('end', function() {
var json_data = JSON.parse(body); // request stream finished, parse body to json
console.log(json_data)
});
}
}
).listen(80);
![](https://images.gutefrage.net/media/user/RakonDark/1552185525294_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1552185525000)
benutzt du das express modul ?
dann brauchst du das nur an die route senden und da verarbeiten .
![](https://images.gutefrage.net/media/user/RakonDark/1552185525294_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1552185525000)
praktisch müsstest du die daten ja serialisieren über einen request senden und den request dann in der server.js abfangen und verarbeiten , anschliessend ein response .
http://expressjs.com/en/guide/routing.html
das wäre z.b. eine antwort auf die anfrage mit /mydata
app.get('/mydata', function (req, res) {
res.send('daten erhalten')
})
in req stehen die daten die ankommen in res was zur seite zurück geschickt wird .
was ich auf die schnelle gefunden habe ist
https://codeforgeek.com/2014/09/handle-get-post-request-express-4/
das zeigt dir wie der javascript im html aufgebaut wird um es zu senden . mit express kann man dann schön die route festlegen die es verarbeiten soll .
bin leider auch schon etwas lange raus aus node.js . und hab auch gerade nicht gefunden wie man nun die variable in sendefähiges material übersetzt .
![](https://images.gutefrage.net/media/user/RakonDark/1552185525294_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1552185525000)
aber so wie es da aussieht, muss es halt ein JSON objekt werden .
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/default/user/6_nmmslarge.png?v=1438863662000)
Also sinnvoller währe es mit PHP aber wenn du dieses nicht benutzt kann ich dich nur fragen hast du die datei in eine "deinname.html" datei eingebunden ?
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/default/user/6_nmmslarge.png?v=1438863662000)
ok wenn du dann variablen definiert hast binde nach der datei einfach deine server.js - Datei ein und schaue welche variable deine server.js speichert (z.B save) und definiere dies variabel in deiner anderen .js - Datei auch . Also in etwa so:
//Benutzer . js
Bla bla bla
var save = deine Daten;
//Server .js
bla bla
//abschnitt wo die variable gebraucht wird
data_to_save = save;(variable wurde übergeben)
bla bla
Pass aber auf das deine Benutzer.js datei vor deiner
Server.js in deine Html eingebunden wird. Sollte dies
nicht funktionieren schreibe mir Privat ich helfe dir
dann.
![](https://images.gutefrage.net/media/user/RakonDark/1552185525294_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1552185525000)
sorry aber hast du von node.js überhaupt eine ahnung ? das ist kein apache server und verhält sich auch total anders .
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
Die Idee ist klever, allerdings wird das so nicht gehen können. Serverdateien sind nicht direkt gekoppelt, wäre auch sehr unsicher. In diesem Fall z.B. benutze ich via Braintree (https://developers.braintreepayments.com/) eine PayPal-Implementierung. Da gibt es auf der Clientseite eine paypal.js, die, um das auf mein Problem zu reduzieren, Daten sammelt und eine paypal.js auf der Serverseite, in der auch Accountinformationen für den Geldtransfer enthalten sind. Wenn die serverseitige paypal.js einsehbar wäre, bringe das mehr Nachteile als Vorteile.
![](https://images.gutefrage.net/media/user/RakonDark/1552185525294_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1552185525000)
unter anderem gibt es da quasi keine html dateien sondern mann kann die html dateien quasi einlesen und dann als content text/html senden . node.js ist ein JavaScript Framework .
Installiert ist es, benutzt habe ich es noch nicht. Wie genau sende ich die Daten dann an die route? Oder kannst du mir da eine bestimmte Quelle empfehlen? Ansonsten muss ich mich mal gleich durch Google wühlen.