私はバックエンド開発とajaxを始めたばかりです。 node.js、express、およびejsを使用しています。私はいくつかのデータを投稿し、ajaxを使用して値を返そうとしています。 404エラーが発生し続けますが、理由はわかりません。また、エクスプレスジェネレーターを使用してプロジェクトを作成し、ボディパーサーもインストールしました。
これは、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ファイルは他のすべてを呼び出します。私はindex.jsファイル内にpostメソッドを配置しようとしていますが、そこに行くべきか、それともapp.jsファイルに入れるべきかは正確にはわかりません。他のファイルがどのように見えるかなど、他の情報を知る必要がある場合は、喜んでお見せします。
回答 1 件
関連記事
- NodejsエクスプレスルーティングPOST要求の空の本文、body-parserを使用
- Express関数がリクエストとレスポンスの両方を引数として取るのはなぜですか?
- 要求はまだ終了していませんmongoDBおよびExpressのエラー
- エクスプレスからmongoDBへのリクエストの投稿
- ノードJS Expressサーバー:すべての正しいヘッダーがある場合でも、クロスオリジンリクエストがブロックされました
- エクスプレス:リクエストを1つずつに制限する
- nodejsおよびエクスプレス:バックエンドからフロントエンドに応答を送信
- Angular 5とnodejsはprodビルドの問題を表します
- ボタンから投稿リクエストを呼び出す方法は?ノードエクスプレス
次のような有効なJSON文字列をデータに渡す必要があります