2012-06-20 20 views
9

Per esempio supponiamo lato client ho una funzione JavaScriptIn Node.js come comunicare con il lato client JavaScript?

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

Le coordinate vengono recuperati utilizzando una chiamata di funzione per Google o simili. Come posso trasmettere queste informazioni al mio server Node.js?

+0

Perché non utilizzare una sorta di sistema di template? Ti renderà la vita più facile – elclanrs

+3

@elclanrs come potrebbe il templating aiutare? – Raynos

risposta

12

Il modo più semplice? Configurare Express e far comunicare il codice lato client tramite Ajax (ad esempio, utilizzando 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); 

Sul lato client, si potrebbe chiamare in questo modo:

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" 
}); 

Nota questo codice è semplicemente un esempio; dovrai calcolare la gestione degli errori, ecc.

Spero che questo aiuti.

4

Effettuare una richiesta HTTP, proprio come faresti con qualsiasi altro programma lato server in un'applicazione web.

È possibile eseguire questa operazione con XMLHttpRequest object o generare un <form> e quindi inviarlo o una varietà di altri metodi.

+3

Oppure aprire una websocket. – Raynos

2

Se sono necessarie funzionalità (soft) in tempo reale, si consiglia di utilizzare Socket.io library. Con il socket, il nodo può anche inviare dati agli script lato client.

+0

Probabilmente non ha bisogno di socket.io per questo – Raynos

+5

Haha, perché hai menzionato WebSockets sul post di Quentin, allora? : D. È esattamente ciò che offre socket.io ma con supporto per browser. –

1

Penso che lo NowJS sia perfetto per te. Esempio:

// 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> 

Si può mettere variabili e funzioni in uno spazio comune (vale a dire l'oggetto now), dal client al server e viceversa.

+0

nowjs è una soluzione complessa se solo ha bisogno di ottenere alcuni piccoli pezzi di dati – Raynos

+0

concordati. Ma lui non dice che ha bisogno solo di alcuni pezzi di dati; ha appena dato un esempio –

+1

Al momento, il server Nowjs.com non è attivo e il codice github ha più di 2 anni. Inoltre, non è riuscito a creare un 'npm install now', che richiede la compilazione di python. – shailenTJ

Problemi correlati