带有express.js的Node.js返回500到ajax调用

时间:2017-11-12 18:50:29

标签: javascript node.js ajax cordova express

我有一个cordova项目,我提出以下要求。

$("#asd").on("click",function(){
    var data = {};
    data.title = "title";
    data.message = "message";

    $.ajax('127.0.0.1:3000/register', 
    {
        type: 'POST',
        data: JSON.stringify(data),
        contentType: 'application/json',
        success: function() { console.log('success');},
        error  : function() { console.log('error');}
    });
});

服务器端代码:

var express = require('express');
var app = express();

app.use(express.bodyParser());


app.post('/register', function(req, res){
    var obj = {};
    console.log('body: ' + JSON.stringify(req.body));
    res.send(req.body);
});


app.listen(3000);

但是当我发送请求时,我得到Internal Server Error 500。如果我只是通过html表单或curl提出请求它就可以正常工作。

这可能是什么原因?

3 个答案:

答案 0 :(得分:0)

如果它与CORS有关,那么你需要通过添加以下HTTP头来允许服务器上的CORS服务于静态:

Access-Control-Allow-Origin: http://127.0.0.1:3000

Here是Express的示例(他们使用通配符*代替http://127.0.0.1:3000)。

答案 1 :(得分:0)

$.ajax({
        url:'/register',   //or 'localhost:3000/register'
        type: 'POST',
        data: JSON.stringify(data),
        contentType: 'application/json',
        success: function() { console.log('success');},
        error  : function() { console.log('error');}
    });

此外,您还需要使用cors()

var cors = require('cors')

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

另外:https://enable-cors.org/server_expressjs.html

答案 2 :(得分:-1)

在回复中尝试JSON.stringify()

res.send(JSON.stringify(req.body));