2015-01-06 125 views
0

我在尝试发布帖子时遇到问题。我的app.get可以很好地工作,但我不能说这个帖子是一样的。这是我的server.jsnode js express 3 app.post not working

// Express is the web framework 
var express = require('express'); 
var app = express(); 
app.use(express.bodyParser()); 
app.configure(function() { 
    app.use(allowCrossDomain); 
}); 

app.post('/server/orders',express.bodyParser(), function(req, res) { 
    alert("Estamoooo"); 
    console.log("POST Order"); 
    var client = mysql.createConnection({ 
    host  : 'localhost', 
    database : "DB", 
    user  : 'root', 
    password : 'XXXX' 
    }); 
    client.connect(); 


    var name = req.body.name; 
    var lastname = req.body.lastname; 
    var telephone = req.body.telephone; 
    var address = req.body.address; 
    var queso = req.body.queso; 
    var vainilla = req.body.vainilla; 
    var date = req.body.date; 


    var query = client.query("insert into orden(name,lastname,telephone,address,queso,vainilla,date) values('" 
    + name + "', '" + lastname +"','"+ telephone +"' , "+ address + ", '" + queso + "', "+ vainilla +", '" + date 
    +"');"); 
    query.on("end", function (result) { 
     client.end(); 
     res.json(true); 
    }); 

}); 

,这是我appjs.js

function addOrder(){ 
    var newOrder = {}; 
    newOrder.name = document.getElementById("nombre").value; 
    newOrder.lastname = document.getElementById("apellido").value; 
    newOrder.telephone = document.getElementById("telefono").value; 
    newOrder.address = document.getElementById("direccion").value; 
    newOrder.queso = document.getElementById("cantidadQueso").value; 
    newOrder.vainilla = document.getElementById("cantidadVainilla").value; 
    newOrder.date = document.getElementById("fecha").value; 

    var newOrderJSON = JSON.stringify(newOrder); 
    alert("New Order: " + newOrderJSON); 
    $.ajax({ 
     url : "http://192.168.0.1:8020/server/orders", 
     method: 'post', 
     data : newOrderJSON, 
     contentType: "application/json", 
     dataType:"json", 
     success : function(data, textStatus, jqXHR){ 
      alert("Data Added!!!"); 
     }, 
     error: function(data, textStatus, jqXHR){ 
      alert("Data could not be added!"); 
     } 
     }); 
} 

阿贾克斯不会被调用。我没有得到回应,只是没有任何反应。这很奇怪,因为get的作品真的很棒。谢谢!

更新:我知道服务器端工作得很好。问题出在appjs代码中。它正在跳过ajax呼叫。

+0

您的客户代码是否被执行?顺便说一句,你不需要串数据变量:'JSON.stringify(newOrder)'。只是通过它是如何的:'数据:newOrder,' – czerasz

+0

是的它被执行。只是一个按钮,它有一个onclick =“addOrder()”实际上我可以在ajax之前得到警报,但那就是它。没有其他的。 –

+0

请求是否到达服务器(检入您的浏览器网络监视器)?如果是,服务器是否会返回任何调试消息? – czerasz

回答

0

我想你忘了app.listen(8020);的一部分。

我测试下面的例子:

// Express is the web framework 
var express = require('express'); 
var app = express(); 
app.use(express.bodyParser()); 

app.post('/server/orders',express.bodyParser(), function(req, res) { 
    console.log("POST Order"); 

    var name = req.body.name; 
    var lastname = req.body.lastname; 
    var telephone = req.body.telephone; 
    var address = req.body.address; 
    var queso = req.body.queso; 
    var vainilla = req.body.vainilla; 
    var date = req.body.date; 

    console.log(name, lastname, telephone, address, queso, vainilla, date); 

    res.send('works'); 
}); 

app.listen(8020); 

用下面的命令:

curl -v -XPOST 'localhost:8020/server/orders' -d "name=name value&lastname=lastname value&telephone=telephone value&address=address value&queso=queso value&vainilla=vainilla value&date=date value" 
* Hostname was NOT found in DNS cache 
* Trying 127.0.0.1... 
* Connected to localhost (127.0.0.1) port 8020 (#0) 
> POST /server/orders HTTP/1.1 
> User-Agent: curl/7.35.0 
> Host: localhost:8020 
> Accept: */* 
> Content-Length: 145 
> Content-Type: application/x-www-form-urlencoded 
> 
* upload completely sent off: 145 out of 145 bytes 
< HTTP/1.1 200 OK 
< X-Powered-By: Express 
< Content-Type: text/html; charset=utf-8 
< Content-Length: 5 
< Date: Tue, 06 Jan 2015 16:42:35 GMT 
< Connection: keep-alive 
< 
* Connection #0 to host localhost left intact 
works% 

正如你可以看到它的工作原理。

+0

我有app.listen(8020); 仍然没有工作。让我试试你的代码。 –

+0

仍然没有工作。 ajax没有被调用。这很奇怪 –

+0

好吧,让它与您的代码一起工作。我遇到了警报问题。当我使用curl -v -XPOST'localhost:8020/server/orders'-d“name = name value&lastname = lastname value&telephone = telephone value&address = address value&queso = queso value&vainilla = vainilla value&date = date value”时,当从ajax调用时。它仍然没有调用ajax,这意味着服务器没问题,问题在于addOrder方法。 –

0

我忘了把包括在我的html jquery,这就是为什么ajax代码块被跳过。