JSon aus FireFox verschicken und empfangen.

Diskutiere JSon aus FireFox verschicken und empfangen. im Für Verirrte - Fragen zu JavaScript Forum; Hallo ich arbeite zum ersten Mal mit JavaScrip und habe ein Problem. Ich möchte aus FireFox eine URL per JSon an einen Raspberry Pi schicken auf...

  1. Magier
    Magier Neues Mitglied
    Hallo
    ich arbeite zum ersten Mal mit JavaScrip und habe ein Problem. Ich möchte aus FireFox eine URL per JSon an einen Raspberry Pi schicken auf dem Node.js läuft.

    Hier die Send-Funktion aus dem FireFox-Addon (FireFox Quantum 64.0 64-Bit unter Windows 7):

    Code (Text):

    function sendJSon(str_url){
    var xhr = new XMLHttpRequest();
    var url = "192.168.1.102";
    xhr.open("POST", url, true);
    //console.log(str_url);
    //console.log(JSON.stringify(new String(str_url)));
    var data = JSON.stringify(new String(str_url));
    xhr.send(data);
    //console.log(data);
    console.log("Ende");
    }
    (Die Variable str_url sollte ein String sein und die zu sendende Adresse enthalten).

    Das Plugin wird sauber geladen und läuft auch durch. Nur bekomme ich am Ende einen Fehler:

    Ich bin mir nicht sicher woher dieser Fehler kommt. Ich könnte mir vorstellen das es an der Variable url liegt, die eine IP Adresse ist. In den Beispielen ist das immer richtige Domain Adresse aber hier in meinem privaten Netz wollte ich, gerade zum Entwickeln, keine Domains vergeben. Geht das nicht auch so?

    Der Node Code sieht so aus.
    Code (Text):

    var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
    var xhr = new XMLHttpRequest();
    xhr.open('GET', '/', true);
    // If specified, responseType must be empty string or "text"
    xhr.responseType = 'text';
    while (true) {
         xhr.onload = function () {
         if (xhr.readyState === xhr.DONE) {
             if (xhr.status === 200) {
             console.log(xhr.response);
             console.log(xhr.responseText);
          }
       }
    };
    }
    xhr.send(null);
     
    Die Node Version ist v8.11.3 und der Code ist aus einem Beispiel, um eine while() Dauerschleife erweitert. Ich will oder hoffe einfach nur das alles was empfangen wird in der Konsole landet. Ist erst mal nur zum lernen, testen und verstehen.

    Hier gibt es keine Fehlermeldungen. Es wird einfach nichts angezeigt.

    Könnte mir da jemand vielleicht weiterhelfen und mir erklären was ich falsch mache und wie man das zum laufen bring?

    Schon mal herzlichen Dank

    Magier
     
  2. Vielleicht hilft dir dieses Training hier weiter.
  3. mrBrown
    mrBrown Super-Moderator Mitarbeiter
    An der Variabel URL liegt's nicht. Ist aber in jedem Fall unüblich, einfach nur den String als JSON zu serialisieren (wenn auch möglich).

    Mir fallen grad zwei mögliche Fehlerquellen ein: irgendwo ist XML als Contenttype angeben und es wird versucht es zu verarbeiten oder Same-Origin Policy macht da was kaputt.
    Vermutlich ist es in beiden Fällen besser, die Fetch-API zu nutzen.


    Der "Node"-Code ist in jedem Fall völliger Unsinn.
    Du startest auf dem Server einen GET-Request zu der URL '/' (also dem selben Server), setzt dann in einer endlos-Schleife die onload-Funktion neu, die vermutlich niemals was machen wird, weil der Status niemals 200 ist.

    Wenn du Serverseitig auf Requests warten willst, solltest du ein passendes Framework wie z.B. express.js nutzen (und dich einmal ganz Grundlegen mit HTTP und Request/Response-Prinzip auseinander setzen)
     
  4. Magier
    Magier Neues Mitglied
    Danke für den Hinweis...Nach etwas hin und her habe ich jetzt laufender Code.

    Code (Text):

    function  sendJSon(str_In){
     
      var obj_temp = { "Send" :  str_In};  
      var request = new XMLHttpRequest();  
      var obj_data = JSON.stringify(obj_temp);
       
      request.open("POST", "http://192.168.1.102:3000/");
      request.setRequestHeader("Content-Type", "application/json");  
      /*request.onload = function()
      {
          alert("Response received: " + request.responseText);
      };*/  
      request.send(obj_data);
    }
     
    Und der Tipp mit Express war wirklich gut, DANKE dafür. Es war zwar etwas gefrimel aber es funzt....
    Code (Text):


    var express  = require("express");
    var myParser = require("body-parser");
    var multer   = require('multer'); // v1.0.5
    var upload   = multer(); // for parsing multipart/form-data
    var app      = express();

    app.use(myParser.json()); // for parsing application/json
    app.use(myParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
    app.post("/", function(request, response) {
         
          obj_Re =  JSON.parse(JSON.stringify(request.body));
          console.log(obj_Re.Send);    
     });

    app.listen(3000, function () {
      console.log('Example app listening on port 3000!');
    });
     
    Jetzt kann ich weiter bauen ;-) Also Danke.
     
  5. Wenn du Java lernen möchtest, empfehlen wir dir diese Online-Training hier
Die Seite wird geladen...

JSon aus FireFox verschicken und empfangen. - Ähnliche Themen

json page 2 auslesen
json page 2 auslesen im Forum XML und Co.
JSON Array
JSON Array im Forum Java Basics - Anfänger-Themen
Json & Xml deserialisierung
Json & Xml deserialisierung im Forum Allgemeines EE
Wie führe ich org.json.jar aus?
Wie führe ich org.json.jar aus? im Forum Java Basics - Anfänger-Themen
JSON mit GSON nutzen
JSON mit GSON nutzen im Forum XML und Co.
Thema: JSon aus FireFox verschicken und empfangen.