jquery ajax post undefined

时间:2017-05-04 07:55:09

标签: jquery node.js ajax post

我已经通过stackoverflow搜索了这个问题,但无法得到解决我问题的任何答案。

这甚至是我的node.js书中的示例代码。我不知道为什么这不起作用,我想起诉本书的作者。他给了我很大的压力。

1] server.js中的代码

app.post('/products', function (request, response){

console.log(request.params);
var name = request.params.name;
var price = request.params.price;
var item = {
    name : name,
    price : price
};

items.push(item);

response.send({
    message : 'Data pushed',
    data : item
    });
});

2] index.html中的代码

$('#post').click(function(){
     console.log($('#name').val());
     console.log($('#price').val());
     $.ajax({
        url:'/products',
        type:'post',
        dataType : 'text',
        data : {
          name : $('#name').val(),
          price : $('#price').val()
        },
        success : function(data){
          $('#output').val(data);
        }
    });
});

我可以通过console.log看到我在Chrome浏览器控制台的#name和#price中输入的正确数据。但我无法通过console.log(request.params)在server.js中看到任何数据。 console.log(request.params),console.log(request.params.id),console.log(reqeust.params.price)都返回'undefined' 为什么它返回undefined? 我尝试了很多通过互联网搜索过的东西,但没有解决。有什么问题?

1 个答案:

答案 0 :(得分:0)

您是否在服务器文件中使用了Expess

var app = express();
app.use(express.bodyParser());

或者

var bodyParser = require('body-parser');
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

在服务器js中,您需要使用request.body代替request.params

var name = request.body.name;
var price = request.body.price;

您正在从服务器发送json,因此请使用dataType : 'json'

$.ajax({
    url:'/products',
    type:'post',
    dataType : 'json', // use json instead of text
    data : {
      name : $('#name').val(),
      price : $('#price').val()
    },
    success : function(data){ 
        console.log(data);// for name use data.data.name
        //$('#output').val(data);
    }
});