質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

611閲覧

Handlebarsからデータをserver側に送る方法

Mikamikachan

総合スコア2

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/10/29 19:05

課題で履修登録システムを作っています。

“履修する”というボタンを押すと生徒番号が取得でき、
サーバー側でその生徒番号をMongoDBに保存したいと考えております。

しかしHandlebarsの<button id="{{studentNumber}}">履修する</button>のidを
どのようにしてサーバー側で取得したらよいかわからず質問させていただきました。

フォルダ内はこのようになっています。
public--
|
--student.js
views--
|
--student.hbs
server.js

もともと、student.hbsから以下のような方法で直接server.jsにidを渡したかったのですが、
<input type="text">以外の方法でstudentNumberの値の渡し方がわからず、student.jsを作成してみました。

<form action="/student" method="post"> <button id="{{studentNumber}}"> //idを直接server.jsで取得したかった </form>

‟履修する”ボタンを押すと、student.jsでid studentNumberが受け取れるようにもしてみたのですが
student.jsからserver.jsへidの値をどのように受け渡してよいかわかりません。

///server.js app.get("/student", (req,res)=>{ Students.find() .exec() .then((students)=>{ var data = []; for(const student of students){ data.push({ studentNumber.student.studentNumber }) } res.render("student",{ data, layout: false }) }) }) app.post("/student", (req,res)=>{ console.log(req.body.studentNumber); ///ここでidのstudentNumberを受け取れるようにしたいです })
///student.hbs <head> <script src="/student.js"></script> </head> <body> {{#each data}} <div> <button id"{{studentNumber}}">履修する></button> </div> {{/each}} </body>
///student.js const buttons = document.getElementByTagName("button"); window.onload = ()=>{ for(var i = 0; i < buttons.length; i++){ buttons[i].addEventListener("click", (e) =>{ console.log(`生徒番号${e.target.id}がクリックされました!`); //例)生徒番号1がクリックされました!      const json = { "studentNumber": e.target.id } console.log(json.studentNumber); //1                                                                         ////ここから取得した生徒番号1をどのようにしてserver.jsのapp.post("/student")に渡せばよいかわかりません /////試しにfetchを使用してみましたがserver.jsのapp.post("/student")に渡せませんでした。 fetch("/student", { method: "post", body: JSON.stringify(json) }) .then((response)=>{ if(response.ok){ console.log(response.json); return response.json(); } throw new Error("failed"); }) }) } }

わかりずらい説明で申し訳ありませんが、
student.jsで取得したstudentNumberをserver.jsへ渡すやり方を教えていただけると助かります。
それか、student.jsを介さず、直接student.hbsからserver.jsへ渡すやり方があればそちらも教えていただけると助かります。

ご教示よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

以下のようにhandlebarsを変更してみたところ、
student.jsを介さずに直接server.jsのapp.post("/student")で
studentNumberを取得することができました。

///student.hbs <form method="post" action="/student"> <input name="studentNum" type="hidden" value="{{studentNumber}}"> <button type="submit">履修する</button> </form>
app.post("/student", (req, res)=>{ console.log(req.body.studentNum); ///1 })

投稿2021/10/29 19:26

Mikamikachan

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問