2012-06-20 6 views
9

Zum Beispiel nehme an Client-Seite Ich habe eine JavaScript-FunktionIn Node.js wie kommuniziere ich mit clientseitigem JavaScript?

function getLocation() { 
    var latitude = ...; 
    var longitude = ...; 
} 

Die Koordinaten abgerufen werden einen Funktionsaufruf zu Google oder einem ähnlichen Gegenstand. Wie kann ich diese Informationen an meinen Node.js Server übertragen?

+0

Warum nicht eine Art von Vorlagensystem verwenden? Es wird Ihr Leben einfacher machen – elclanrs

+3

@elclanrs Wie könnte Templating möglicherweise helfen? – Raynos

Antwort

12

Der einfachste Weg? Richten Sie Express ein und lassen Sie Ihren clientseitigen Code über Ajax kommunizieren (z. B. mit jQuery).

(function() { 
    var app, express; 

    express = require("express"); 

    app = express.createServer(); 

    app.configure(function() { 
    app.use(express.bodyParser()); 
    return app.use(app.router); 
    }); 

    app.configure("development", function() { 
    return app.use(express.errorHandler({ 
     dumpExceptions: true, 
     showStack: true 
    })); 
    }); 

    app.post("/locations", function(request, response) { 
    var latitude, longitude; 
    latitude = request.body.latitude; 
    longitude = request.body.longitude; 
    return response.json({}, 200); 
    }); 

    app.listen(80); 

}).call(this); 

Auf der Client-Seite, könnte man es so nennen:

var latitude = 0 
    , longitude = 0; // Set from form 

$.post({ 
    url: "http://localhost/locations", 
    data: {latitude: latitude, longitude: longitude}, 
    success: function (data) { 
    console.log("Success"); 
    }, 
    dataType: "json" 
}); 

Hinweis: dieser Code ist nur ein Beispiel; Sie müssen die Fehlerbehandlung usw. ausarbeiten.

Hoffe, dass hilft.

4

Durch eine HTTP-Anfrage, wie Sie es mit jedem anderen serverseitigen Programm in einer Webanwendung tun würden.

Sie könnten dies mit der XMLHttpRequest object, oder indem Sie eine <form> erstellen und dann, oder eine Vielzahl anderer Methoden einreichen.

+3

Oder öffnen Sie eine Websocket. – Raynos

2

Wenn Sie (Soft-) Echtzeitfunktionen benötigen, empfehle ich die Verwendung der Socket.io library. Mit Socket kann der Knoten auch Daten an Ihre clientseitigen Skripte übertragen.

+0

Er braucht wahrscheinlich nicht socket.io für diese – Raynos

+5

Haha, warum hast du WebSockets auf Quentin's Post erwähnt, dann? : D. Es ist genau das, was socket.io bietet, aber mit browserübergreifender Unterstützung. –

1

Ich denke, dass NowJS wird eine perfekte Passform für Sie sein. Beispiel:

// On the Node.JS server 

var nowjs = require("now"); 
var everyone = nowjs.initialize(httpServer); 

everyone.now.getServerInfo = function(callback){ 
    db.doQuery(callback); 
} 

// In the browser 

<script> 

now.getServerInfo(function(data){ 
    // data contains the query results 
}); 

</script> 

Sie können in einem gemeinsamen Namensraum Variablen und Funktionen gesetzt (das heißt das now Objekt), vom Client zum Server und umgekehrt.

+0

nowjs ist eine komplexe Lösung, wenn er nur ein paar kleine Datenstücke – Raynos

+0

vereinbart bekommen muss. Aber er sagt nicht, dass er nur ein paar Daten braucht; er hat nur ein Beispiel gegeben –

+1

Im Moment ist der Nowjs.com Server heruntergefahren und der Github Code ist über 2 Jahre alt. Auch das Erstellen einer 'npm-Installation 'konnte nicht erstellt werden und erforderte die Kompilierung von Python. – shailenTJ

Verwandte Themen