2011-03-10 5 views
7

He configurado una aplicación web node.js básica utilizando express con el motor de vista predeterminado jade.¿Cómo actualizo A Jade Template form ajax post?

Cuando el usuario carga la página por primera ocurre lo siguiente

app.get('/', function(req, res){ 
    res.render('index', { 
     title: 'Test', 
     mode: "user" 
    }); 
}); 

lo que no puedo hacer ejercicio es cómo a continuación, cambiar el parámetro que pasó inicialmente en la plantilla de jade de una llamada AJAX.

app.post('/', function(req, res){ 
    console.log(req.body.list); 
    res.redirect('back'); 
    // I imagine the code needs to go here and look somewhat like the following 
    // 
    // res.?update-view({ 
    // mode: "admin" 
    // }); 
}); 

Si alguien ha tenido experiencia con este trabajo su entrada sería apreciada.

+0

¿Qué es exactamente lo que estás tratando de lograr? La única solución que veo es la actualización de la interfaz gráfica de usuario mediante el código del lado del cliente (con los datos presentados desde su controlador de correo postal exprés) – schaermu

Respuesta

4

No estoy seguro de lo que está buscando, pero si está actualizando la página con los resultados de una llamada AJAX (que no actualiza o recarga la página), tendrá que usar el lado del cliente JavaScript. jQuery's load() o post() debería ser capaz de manejar eso.

Alternativamente, si no está utilizando AJAX sino que realiza un envío de formulario normal, tiene un par de opciones. Uno, puede mantener su redireccionamiento y usar el sistema Sessions de Express/Connect para determinar qué se utiliza para la solicitud de obtención, o dos puede reemplazar la redirección con otra resolución de la página index.jade e incluir la variable que desea cambio.

Se debe entender que, después de que cualquiera de estos casos tenga lugar, node.js renuncia al control de la página web en el navegador, a menos que configure específicamente la arquitectura para la comunicación. Actualmente no hay controles en node.js para forzar actualizaciones o cambios de página al cliente. Excepto a través de las conexiones de socket o a menos que el propio cliente haya sondeado (como en el primer ejemplo que involucra a jQuery).

0

usted podría utilizar algo como lo siguiente, o si desea utilizar una utilización llamada AJAX jQuery Ajax, siempre y cuando haya una respuesta

cliente

script(type="text/javascript") 
    $(document).ready(function(){ 
    //...AJAX here.... 
    var newValue = #{value} + 10; 
    }); 

servidor

app.get('/ajax', function(req, res){ 
//This is where your code and response go 
}); 
1

Suponiendo que desea mostrar la misma página, con otro "modo"

// set the page title for all requests 
app.locals({ title: 'Test' }); 

// GET request 
app.get('/', function(req, res){ 
    res.render('index', { 
    // displays the default "user" mode 
    mode: 'user' 
    }); 
}); 

// when POST is submited 
app.post('/', function(req, res){ 
    // this is the param given by the user 
    console.log(req.body.list); 

    // now render the same page 
    res.render('index', { 
    // with mode set to the the given parameter 
    mode: req.body.list 
    }); 
});