Неверный запрос 400: Node.js Express Ajax - PullRequest
0 голосов
/ 25 мая 2018

Я новичок в разработке и ajax.Я использую node.js, экспресс и ejs.Я пытаюсь опубликовать некоторые данные и вернуть значение с помощью ajax.Я продолжаю получать ошибку 404, и я не уверен, почему.Кроме того, я использовал экспресс-генератор для создания проекта, а также установил body-parser.

Вот запрос ajax, который находится в моем файле index.ejs.Он находится внутри тега script в заголовке.

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

Я все еще пытаюсь понять это, и генератор сделал файлы для меня.Насколько я понимаю, файл www в папке bin является сценарием запуска.Файл app.js вызывает все остальное.Я пытаюсь поместить метод post в файл index.js, но я не совсем уверен, должен ли он идти туда или, может быть, в файле app.js.Если вам нужна какая-либо другая информация, например, как выглядят другие файлы, я был бы рад показать вам.

1 Ответ

0 голосов
/ 25 мая 2018

Вы должны передать в данные действительную строку 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);
    });
} 
...