2012-12-27 37 views
6

JQuery ile AJAX posta isteği yapmak için Node.JS ve Express benim Node.JS sunucusuna yapmaya çalışıyordum, ama işe yaramıyor!JQuery Ajax node.js ile istek ve ekspres

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('/'); 

}); 

Ve bu ajax.ejs geçerli:

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

ajax.ejs yüklendiğinde, konsolunda herhangi çıkış yoktur, bu yüzden post isteği çalışmadı. Ne yapabilirim?

Teşekkürler!

+0

hareket express.bodyParser()() kısmı: app.use (express.bodyParser ()); Gönderin gövdesi req.body üzerinden alabilirsiniz. – asgoth

+0

Bitti! Yani, ben 'console.log (req); Ancak posta isteği hala çalışmıyor, konsolda hiç çıktı yok. – MrMangado

cevap

6

Sorunu çözdüm. Sen (form etiketinden sonra) vücudunuza başınızdan Senaryonu taşımak gerekir:

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

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

</script> 
</body> 
+0

Doğru, işe yarıyor! : D – MrMangado

1

aşağıdaki kod yeni sürümler göre çalışır. app.use için

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>