400 Bad Request:Node.js Express Ajax

时间:2018-05-25 09:42:16

标签: javascript node.js ajax express ejs

我是后端开发和ajax的新手。我正在使用node.js,express和ejs。我正在尝试发布一些数据,并使用ajax返回一个值。我一直收到404错误,我不知道为什么。另外,我使用了express生成器来创建项目,还安装了body-parser。

这是我的index.ejs文件中的ajax请求。它位于标题中的脚本标记内。

function post() {
    $.ajax({
        type: "POST",
        url: "/test",
        data: 'TEST',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
    }).done(function (data) {
        console.log("Did it work? "+ data);
    });
}

按下按钮后ajax会执行,我收到400错误请求。我认为这可能与index.js文件中的内容有关。它也可能是快速生成器生成服务器的方式。再一次,我是新手,所以这里的任何输入都会很棒。

index.js:

var express = require('express');
var router = express.Router();
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json()); // support json encoded bodies
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies


/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index');
});
app.post('/test', function(req, res) {
    console.log(req.body);
    res.type('json');
    res.send("hi");
  });
module.exports = router;

可能是因为索引页面是使用ejs渲染的吗?

提前致谢!

更新:400已修复,现已获得404

400错误是由于我尝试发送对象而不是字符串引起的。现在,我收到404错误。根据要求,我的文件结构如下。

  .
  ├── app.js
  ├── bin
  │   └── www
  ├── package.json
  ├── public
  │   ├── images
  │   ├── javascripts
  │   └── stylesheets
  │       └── style.css
  ├── routes
  │   ├── index.js
  │   └── users.js
  └── views
      ├── error.ejs
      ├── index.ejs
      └── layout.ejs

  7 directories, 9 files

我仍然试图掌握这一点,发电机为我制作了文件。据我所知,bin文件夹中的www文件是启动脚本。 app.js文件调用其他所有内容。我正在尝试将post方法放在index.js文件中,但我不确定它是否应该去那里或者可能在app.js文件中。如果你需要知道任何其他信息,比如其他文件的样子,我很乐意告诉你。

1 个答案:

答案 0 :(得分:2)

您必须将有效的json字符串传递给数据,例如

function post() {
    $.ajax({
        type: "POST",
        url: "/test",
        data: JSON.stringify({data: 'TEST'}),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
    }).done(function (data) {
        console.log("Did it work? "+ data);
    });
}