[解決済み] JsonPlaceholderの偽サーバにデータをPOSTする方法は?
2022-02-28 14:32:32
質問
を使って、サーバーに新しいデータを挿入するように見せかけたい。 https://jsonplaceholder.typicode.com/ フェイクサーバー 私はこのチュートリアルを使ってデータを送信しようとしています。 https://jsonplaceholder.typicode.com/guide.html#Create_a_resource . しかし、データが挿入されたかどうかを知るにはどうすればよいのでしょうか?また、クリックすると New() 関数が呼び出されるフォームに送信ボタンがあることで、正しく挿入されているでしょうか?そして、フォーム自体は、それが表示されているのと同じページ(add.html)に移動します。
function New()
{
var userid = document.getElementById("new_userId").value;
var new_title = document.getElementById("new_title").value;
var userid = document.getElementById("new_body").value;
fetch('https://jsonplaceholder.typicode.com/posts', {
method: 'POST',
body: JSON.stringify({
title: new_title,
body: new_body,
userId: userid
}),
headers: {
"Content-type": "application/json; charset=UTF-8"
}
})
.then(response => response.json())
.then(json => console.log(json))
}
<html>
<head>
<link rel="stylesheet" type="text/css" href ="style.css">
<meta http-equiv="Content-Type" charset="UTF-8" >
</head>
<body>
<h1>Please type in new item data:</h1><br>
<form id = "add_form" method = "POST" action = "add.html">
<label class = "add_label"><b> userId: </b></label>
<input type = "number" class = "add_input" id="new_userId" name="new_userId" value = "">
<br>
<label class = "add_label"><b> title: </b></label>
<input type = "text" class = "add_input" id="new_title" name="new_title" value = "">
<br>
<label class = "add_label"><b> body: </b></label>
<input type = "text" class = "add_input" id="new_body" name="new_body" value = "">
<button id = "add_btn2" onclick = "New()" type = "submit">Submit</button>
</form>
</body>
</html>
ありがとうございました。
アップデートを行いました。 ありがとうございます。入力とラベルはフォームにラップする必要がありますが、e.PreventDefault()はNew(e)関数で使用する必要があります。
<html>
<head>
<meta http-equiv="Content-Type" charset="UTF-8">
</head>
<body>
<form>
<h1>Please type in new item data:</h1><br>
<label class="add_label"><b> userId: </b></label>
<input type="number" class="add_input" id="new_userId" name="new_userId" value="">
<br>
<label class="add_label"><b> title: </b></label>
<input type="text" class="add_input" id="new_title" name="new_title" value="">
<br>
<label class="add_label"><b> body: </b></label>
<input type="text" class="add_input" id="new_body" name="new_body" value="">
<button id="add_btn2" onclick = "New(event)">Submit</button>
</form>
<script>
function New(e) {
e.preventDefault()
var userid = document.getElementById("new_userId").value;
var new_title = document.getElementById("new_title").value;
var new_body = document.getElementById("new_body").value;
console.log("Input Data: " + userid + " " + new_title + " " + new_body);
fetch('https://jsonplaceholder.typicode.com/posts', {
method: 'POST',
body: JSON.stringify({
title: new_title,
body: new_body,
userId: userid
}),
headers: {
"Content-type": "application/json; charset=UTF-8"
}
})
.then(response => response.json())
.then(json => {
console.log('response: ' + JSON.stringify(json));
})
}
</script>
</body>
</html>
解決方法は?
問題は
form
.
以下は、動作するコードです。
<html>
<head>
<meta http-equiv="Content-Type" charset="UTF-8">
</head>
<body>
<h1>Please type in new item data:</h1><br>
<label class="add_label"><b> userId: </b></label>
<input type="number" class="add_input" id="new_userId" name="new_userId" value="">
<br>
<label class="add_label"><b> title: </b></label>
<input type="text" class="add_input" id="new_title" name="new_title" value="">
<br>
<label class="add_label"><b> body: </b></label>
<input type="text" class="add_input" id="new_body" name="new_body" value="">
<button id="add_btn2" onclick="New()">Submit</button>
<script>
function New() {
var userid = document.getElementById("new_userId").value;
var new_title = document.getElementById("new_title").value;
var new_body = document.getElementById("new_body").value;
console.log("Input Data: " + userid + " " + new_title + " " + new_body);
fetch('https://jsonplaceholder.typicode.com/posts', {
method: 'POST',
body: JSON.stringify({
title: new_title,
body: new_body,
userId: userid
}),
headers: {
"Content-type": "application/json; charset=UTF-8"
}
})
.then(response => response.json())
.then(json => {
console.log('response: ' + JSON.stringify(json));
})
}
</script>
</body>
</html>
を確認します。 コンソール レスポンスを見るには
関連
-
[解決済み】フォームコントロールの値アクセサがない
-
[解決済み】Uncaught ReferenceError: angular is not defined - AngularJSが動作しない。
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] 要素を水平方向にセンタリングする方法
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングした
-
[解決済み】NodeJS "ESモジュールをロードするためにインポートを使用する必要があります。"
-
[解決済み】Google Conversionsが動作しない - スクリプトが読み込まれない
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み】JavaScriptのボタンonclickが機能しない
-
[解決済み】Redux TypeError: 未定義のプロパティ 'apply' を読み取れない
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】Kendo Observable Bindingと併用する場合、Kendo Switch Labelsを変更することは可能ですか?[Kendo-UI]です。
-
[解決済み】TypeError: res.status は関数ではありません。
-
[解決済み】'useState' が定義されていない no-undef React