简体   繁体   中英

Node.js with express.js returns 500 to ajax call

I have a cordova project where I do the following request.

$("#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');}
    });
});

Server side code:

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

But I get Internal Server Error 500 when I send the request. If I make a request simply by an html form or curl it just works fine.

What might be the cause of this?

If it's related to the CORS, then you need to allow CORS on the server wich serves static via adding the following HTTP header:

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

Here is the example for Express (they put a wildcard * instead of http://127.0.0.1:3000 ).

$.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');}
    });

Also you are required to use cors()

var cors = require('cors')

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

Also: https://enable-cors.org/server_expressjs.html

尝试JSON.stringify()作为响应

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM