【问题标题】:Node.js with express.js returns 500 to ajax call带有 express.js 的 Node.js 向 ajax 调用返回 500
【发布时间】:2017-11-12 18:50:28
【问题描述】:

我有一个 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 提出请求,它就可以正常工作。

这可能是什么原因?

【问题讨论】:

  • 您的服务器出现错误 - 请阅读终端的输出
  • 看起来像 CORS 问题。
  • @dhilt 我该如何解决这个问题,你能帮忙吗?
  • 尝试:仅限$.ajax('/register',
  • @TamBakaka 提供静态文件的服务器是否在与 Express 服务器不同的端口上运行,而不是 3000?

标签: javascript node.js ajax cordova express


【解决方案1】:
$.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

【讨论】:

  • 给出 404 未找到
  • 使用 localhost 会导致相同的行为
  • 你试过上面用于ajax参数的语法吗?
  • 是的,事实证明错误是 req.body 未定义。怎么会这样?
  • 首先express.bodyparser()中间件已经没有了,你用的是什么版本??应该是app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false }));
【解决方案2】:

如果它与 CORS 相关,那么您需要通过添加以下 HTTP 标头来允许服务器上的 CORS 提供静态服务:

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

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

【讨论】:

  • 对同样的问题没有帮助
【解决方案3】:

尝试 JSON.stringify() 作为响应

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-27
    • 2013-02-26
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多