problema con redireccionamiento, paso de variable a la vista, en nodejs

Iniciado por .rn3w., 12 Septiembre 2016, 02:54 AM

0 Miembros y 1 Visitante están viendo este tema.

.rn3w.

no puedo mostrar la variable enviada desde ajax en la vista, ayuda

esta es mi estructura del proyecto
subir fotos

tengo el apps.js (servidor)
Código (javascript) [Seleccionar]

var express= require("express");
var routes = require('./routes/index');

var path = require('path');
var bodyParser=require("body-parser");
var app=express();

var video = require('./node_modules/node-svm/sample/sample');
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
app.get("/",function(req,res){
res.render("index");
});



app.post('/servidor', function(req,res){
   var factDesdeAjax=req.body.fact;
    console.log(req.body.fact);
    res.render('index', { title: factDesdeAjax });
});

app.listen(3000);


tengo mi vista "index.jade"
Código (html4strict) [Seleccionar]
extends layout

block content
   h1= title
   span.label no existe 1 rayo zapato zanahorea karaoke Whisky software wikipedia jinete japon jabon facil frio rayo yogur habil hablar galleta gigante gentil valiente vehiculo vegetariano quebrado quemado botella bandido brazil baile patata patria palabra marcial maqueta manantial caballero temperatura tercero ubicar urgente delfin delgado danza lectura laboratorio ilusivo inadvertencia ilimitado nacido narrado racionalidad radiactivo racismo satelite septiembre obstruir oscilatorio elogioso embajada emblema abundancia kiwi

   p
   li(class='hero-name')
   a(href='#') #{hero}
   h2 Facts
   ul#facts
   label(for="new-fact") Añadir nuevo fact:
   textarea#new-fact
   a(id='add-new-fact', href='#') Añadir
   div#cnt
   div#time
   div#ult
   div#especial
   div#keydiferentes
   div#keyMismos
   div#keyCadaTecla
   div#keyTeclasDerecho
   div#keyTeclasIzquierdo
   div#keyTeclasDerechoAdj
   div#keyTeclasIzquierdoAdj


el layout
Código (html4strict) [Seleccionar]
doctype html
html
 head
   title= title
   link(rel='stylesheet', href='/stylesheets/style.css')
   link(rel='stylesheet', href='/stylesheets/login.css')
   script(src="/javascripts/jquery-1.9.1.js")
   script(type="text/javascript", src='/javascripts/forMain-Script.js')
 body
   block content


tengo mi ajax
Código (javascript) [Seleccionar]
$(window).on('load', function() {          
           
   var id = 'idUsuario';
   $('#add-new-fact').click(function() {
   var fact = $('#new-fact').val();
   $.ajax({
     type: "POST",
     url: "/servidor",
     data: JSON.stringify({ fact: fact }),
     contentType: "application/json; charset=utf-8",
     dataType: "json",
     success: function(data) {
       $('<li>').appendTo('#facts').text(fact);
       $('#new-fact').val('');
     },
     error: function(err) {
       var msg = 'Status: ' + err.status + ': ' + err.responseText;
       alert(msg);
     }
   });
   return false;
 });
           
       });


lo que pretendo hacer  es enviar datos desde ajax y mostrarlos en la vista, pero no se envía, es muy sencillo, me lo pueden revisar???

necesito ayuda porfavor !!! ayudaaaaaaaa

ivancea96

Da más información. ¿Qué ocurre con el ajax? ¿Llama al callback de error?

Con el navegador, firefox o chrome por ejemplo, haciendo click derecho -> Inspeccionar elemento, obtendrás una visión del tráfico de la red. Ahí puedes ver si se envía o no, a dónde se envía y qué respuesta tiene.

.rn3w.

gracias por ayudar.

aumentando mas informacion, el ajax funciona bien, la variable fact del ajax llega hasta el servidor app.js

pero yo quiero enviar/mostrar esa variable en la vista index.jade,
nota index.jade esta arriba el codigo

aqui va mi codigo con el que pretendo enviar/mostrar la variable
app.post('/servidor', function(req,res){
   
    var factor=req.body.fact;
    res.render('index', { title: factor });
});

ivancea96

Código (javascript) [Seleccionar]
success: function(data) {
    $('<li>').appendTo('#facts').text(fact);
    $('#new-fact').val('');
},

¿No haces nada con los datos que te da el servidor?

.rn3w.

solo muestro el valor capturado, lo subo a git hub, para que lo revisen mejor?
lo modifique el app.js
app.get('/server', function(req, res, next) {
  res.render('index', { title: 'Registrosssssssssss de usuario' });
});

app.post('/servidor', function(req,res){
   
    res.redirect('/server');
   
});


me sale este error
sube fotos

.rn3w.


ivancea96

Vale. Pusiste:
Código (javascript) [Seleccionar]
dataType: "json",
Enel AJAX. Eso es que la respuesta del servidor quieres que sea json. Si la respuesta no es json (que es lo que está ocurriendo), tira error.
Si quitas ese par clave-valor, debería funcionar.

.rn3w.

creo que no me explique muy bien disculpas, lo que quiero hacer es enviar la variable title a la vista index.jade

Cita de: .rn3w. en 13 Septiembre 2016, 15:07 PM
solo muestro el valor capturado, lo subo a git hub, para que lo revisen mejor?
lo modifique el app.js
app.get('/server', function(req, res, next) {
 res.render('index', { title: 'Registrosssssssssss de usuario' });
});

app.post('/servidor', function(req,res){
   
   res.redirect('/server');
   
});


me sale este error
sube fotos


aqui va mi vista(el codigo completo de la vista esta arriba), como pueden ver aqui tengo mi variable title, ahi quiero que se muestre esto "'Registrosssssssssss de usuario'", solo para probar, por eso estoy haciendo esto: res.render('index', { title: 'Registrosssssssssss de usuario' });

block content
   h1= title                    
   span.label no existe 1 rayo zapato zanahorea karaoke Whisky software wikipedia jinete japon jabon facil frio rayo yogur habil hablar galleta gigante gentil valiente vehiculo vegetariano quebrado quemado botella bandido brazil baile patata patria palabra marcial maqueta manantial caballero temperatura tercero ubicar urgente delfin delgado danza lectura laboratorio ilusivo inadvertencia ilimitado nacido narrado racionalidad radiactivo racismo satelite septiembre obstruir oscilatorio elogioso embajada emblema abundancia kiwi

   p
   li(class='hero-name')



pero aun sin funcionar, si pueden lo revisan el codigo completo esta en github https://github.com/rn3w/proyectoAjaxPost

.rn3w.

o estoy equivocado___??? no es la manera de hacerlo??? en ese caso como lo harian_? ayuda porfavor

ivancea96

Cita de: .rn3w. en 13 Septiembre 2016, 15:07 PM
sube fotos

Cita de: ivancea96 en 13 Septiembre 2016, 16:19 PM
Vale. Pusiste:
Código (javascript) [Seleccionar]
dataType: "json",
En el AJAX. Eso es que la respuesta del servidor quieres que sea json. Si la respuesta no es json (que es lo que está ocurriendo), tira error.
Si quitas ese par clave-valor, debería funcionar.

¿No es ese el HTML final que quieres generar con la vista?