2016-04-09 16 views
0

Dies ist das erste Mal, dass ich node.js verwendet habe. Es ist mir gelungen, json-Daten erfolgreich an meinen node.js-Server zu senden, aber ich kann nicht herausfinden, wie die json-Daten in eine Funktion übertragen werden innerhalb des Servers und ändern Sie es. Meine Anwendungsabsicht ist ein einfacher Timer, um zu zeigen, wie node.js funktioniert. Wenn mir jemand dabei helfen könnte, wäre ich sehr dankbar.Node.js Ajax Call Ändern von JSON-Daten

Update, ich konnte meinen Code in der Konsole arbeiten, der Timer zählt jetzt, aber es ist nicht zurück auf die HTML-Seite schreiben.

Unten ist mein Code,

function incrementTimer(time) { 
 
    
 
    if (time.second != 60) { 
 
     time.second +=1; 
 
    } else { 
 
     time.second = 0; 
 
     if (time.minute != 60) { 
 
      time.minute +=1; 
 
     } else { 
 
      time.minute = 0; 
 
      time.hour +=1; 
 
     } 
 
    } 
 
    return time; 
 
} 
 

 
var port = 8080; 
 
var http = require("http"); 
 
var server = http.createServer(); 
 
server.on('request', request); 
 
server.listen(port); 
 
function request(request, response) { 
 
    console.log('Request Recieved'); 
 
    var store = ""; 
 

 
    request.on('data', function(data) 
 
    { 
 
     store += data; 
 
    }); 
 
    store = incrementTimer(store); 
 
    request.on('end', function() 
 
    { console.log(store); 
 
     var storeObj = JSON.parse(store); 
 
     incrementTimer(storeObj); 
 
     response.setHeader("Content-Type", "text/json"); 
 
     response.setHeader("Access-Control-Allow-Origin", "*"); 
 
     response.end(JSON.stringify(storeObj) 
 
    }); 
 
} 
 
console.log('Server Started');
<html> 
 
    <head> 
 
     <title>Node.js Demo</title> 
 
    </head> 
 
    <body> 
 
     <h1>Demo of Node.JS</h1> 
 
     <div id="timer"></div> 
 
     <button onclick="startTimer(0,0,0)">Start Timer</button> 
 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
 
     <script> 
 
      function startTimer(s,m,h) {    
 
       $.ajax({ 
 
        type: "POST", 
 
        url: "http://localhost:8080", 
 
        crossDomain: true, 
 
        dataType: "json", 
 
        data:JSON.stringify({second: s, minute: m, hour: h}), 
 
        success: function (data) { 
 
         $('#timer').text(data.hour + ":" + data.minute + ":" + data.second); 
 
         setTimeout(function(){ startTimer(data.second,data.minute,data.hour); }, 1000); 
 
        }, 
 
        error: function (xhr, ajaxOptions, thrownError) { 
 
         alert(xhr.status); 
 
         alert(thrownError); 
 
        } 
 
       }); 
 
      } 
 
     </script> 
 
    </body> 
 
</html>

+0

Ist es möglich, dass dies durch die Rekursion in der Erfolgsmeldung verursacht wird, wird das DOM nicht geschrieben, bis es die Erfolgsmeldung verlässt? –

Antwort

0

Es war sehr einfach Fehler, den ich auf eine ID zu schreiben versuchte, aber es war eine Klasse.