2017-07-20 3 views
0

Ich versuche, ein Formular zu erhalten, um einige Daten zu meinem express app.js ohne die Seite neu zu laden. Ich dachte, ich hätte den richtigen Code, aber wenn es darum geht, den Code vom Ajax-Aufruf zum Server zu bekommen, bekomme ich eine undefinierte Datenvariable.jquery ajax Post zum Ausdruck Server erhalten undefined Daten

app.js: (entfernt irrelevant Linien)

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

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

var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

// uncomment after placing your favicon in /public 
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.get('/web_text.json',function(req, res, next){ 
    res.sendFile(__dirname + '/web_text.json'); 
}); 

app.post('/sendEmail', function (req, res) { 

    console.log(req.body.data); 

}); 

app.use('/', index); 

module.exports = app; 

Jquery-Funktion, die Ajax-Aufruf macht:

$('#reserve form').on('submit', function(){ 

    event.preventDefault(); 
    var data = { 

     name: $('#name').val() 
    }; 
    console.log(data); 
    $.ajax({ 
     url: 'http://localhost:3000/sendEmail', 
     data: data, 
     method: 'POST' 
    }).then(function (response) { 
     // Do stuff with the response, like add it to the page dynamically. 
     $('body').append(response); 
    }).catch(function (err){ 

     console.error(err); 
    }); 
}); 

Note die console.log() s app.post Funktion in meiner/sendemail und der eine in der jquery-Funktion. die jquery zeichnet die richtigen daten auf, während die app.post eine undefinierte variable aufzeichnet ... was mache ich falsch? Vielen Dank im Voraus

+0

ist es console.log (res.body.data) statt console.log (req.body.data); – user1428716

+0

nein ... machte es schlimmer, req.body.data führte zu einer undefinierten Datenvariable, während die res.body.data sofort zu einem Fehlercode von 500 führte – cjlogrono11

+0

Was zeigt console.log (req.body)? –

Antwort

0

Ihre jQuery ist nicht POST JSON, sendet es ein JS-Objekt. Ich würde wetten, dass dies ein Inhaltstyp-Problem ist. Sie können auch in $('#reserve-form').serialize() suchen, um Ihre Formulardaten zum Senden zu verpacken, anstatt zu versuchen, Ihr Objekt manuell zu erstellen.

0

In Ihrer app.js haben Sie die Antwort nicht gesendet. Deshalb erhalten Sie undefinierte Ausgabe. versuchen Sie dies

app.post('/sendEmail', function (req, res) { 
    console.log(req.body.data); 
    res.jsonp({data: 'your data'}); 
}); 

Ich hoffe, dies wird Ihnen helfen.