2012-12-27 19 views
6

Stavo cercando di inoltrare la richiesta di posta AJAX con JQuery al mio server Node.JS in Node.JS ed Express, ma non funziona!JQuery Ajax richiesta post con node.js ed express

var express = require('express') 
var app = express(); 
app.listen(8888); 

app.configure(function(){ 

    app.use(express.bodyParser()); 
    app.set('views',__dirname + '/views'); 
    app.set('view engine', 'ejs'); 
    app.use(express.static(__dirname + '/public')); 
    app.use(express.cookieParser()); 
    app.use(app.router); 

}); 

app.get('/', function (req, res){ 

    res.render('ajax.ejs'); 

}); 

app.post('/ajax', express.bodyParser(), function (req, res){ 

    console.log(req); 
    console.log('req received'); 
    res.redirect('/'); 

}); 

E questo è il ajax.ejs:

<html> 
<head> 
    <script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>  
    <script type="text/javascript"> 

     $('#enter').click(function(){ 

    $.ajax({ 
      url: '/ajax', 
      type: 'POST', 
      cache: false, 
      data: { field1: 1, field2: 2 }, 
      success: function(data){ 
       alert('Success!') 
      } 
      , error: function(jqXHR, textStatus, err){ 
       alert('text status '+textStatus+', err '+err) 
      } 
     }) 
    });    

</script> 
</head> 
<body> 

<form> 
    <input type="button" id="enter" value="Enter"> 
</form> 

</body> 
</html> 

Quando il ajax.ejs è caricato, non c'è alcun output nella console, quindi, la richiesta POST non ha funzionato. Cosa posso fare?

Grazie anticipo!

+0

mossa express.bodyParser() al app.use() Sezione: app.use (express.bodyParser ()); Il corpo del post che puoi recuperare tramite req.body. – asgoth

+0

Fatto! Quindi, cambio 'console.log (req);' a 'console.log (req.body);'. Ma la richiesta non ha ancora funzionato, non ho alcun output nella console. – MrMangado

risposta

6

Ho trovato il tuo problema. È necessario spostare lo script dalla testa al corpo (dopo il tag form):

... 
</form> 
<script type="text/javascript"> 

    $('#enter').click(function(){ 
    ... 

</script> 
</body> 
+0

È vero, funziona! : D – MrMangado

1

Il codice sotto funziona come per le nuove uscite.

server.js

var express = require('express') 
var app = express(); 
var bodyparser = require('body-parser'); 
var urlencodedparser = bodyparser.urlencoded({extended:false}) 

app.set('views',__dirname + '/views'); 
app.set('view engine', 'ejs'); 
app.use(express.static(__dirname + '/public')); 
app.use(express.cookieParser()); 

app.get('/', function (req, res){ 
    res.render('ajax.ejs'); 
}); 

app.post('/ajax', urlencodedparser, function (req, res){ 
    console.log(req); 
    console.log('req received'); 
    res.redirect('/'); 

}); 

app.listen(8888); 

ajax.ejs

<html> 
<head> 
    <script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>  

</head> 
<body> 

<form> 
    <input type="button" id="enter" value="Enter"> 
    <script type="text/javascript"> 

     $('#enter').click(function(){ 

    $.ajax({ 
      url: '/ajax', 
      type: 'POST', 
      cache: false, 
      data: { field1: 1, field2: 2 }, 
      success: function(data){ 
       alert('Success!') 
      } 
      , error: function(jqXHR, textStatus, err){ 
       alert('text status '+textStatus+', err '+err) 
      } 
     }) 
    });    

</script> 
</form> 

</body> 
</html> 
Problemi correlati