teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

a

2018/04/25 12:44

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -1,3 +1,12 @@
1
+ # 回答の前提
2
+
3
+ 修正依頼欄でもお伝えした通り、今回のようなケースではそもそも、`ajax`通信を行う必要はないかと思います。
4
+
5
+ その上で以下の回答は部分的に参考にして頂ければと思います。
6
+
7
+ また、以下のコードは質問文のコードをベースにしたコードにはなっていません。
8
+
9
+
1
10
  # クライアントサイド
2
11
 
3
12
  ```
@@ -36,8 +45,11 @@
36
45
 
37
46
  [https://codepen.io/anon/pen/Vxjjwb](https://codepen.io/anon/pen/Vxjjwb)
38
47
 
39
- Ajaxリクエストが成功した時に、他の`url`に遷移させ場合は`location.href`の値を変更してください
48
+ こちらのコードでは`jsonplaceholder.typicode.com`というデモのAPIを公開してくれているサイトに`post`リクエストを送って、`post`が成功して結果が返ってき、他のページへ遷移させるとうコードになります
40
49
 
50
+ 冒頭に記載したとおり、`ajax`でリクエストを投げて、結果が返ってきたら他のurlを表示させるということ自体が一般的にはあまり行われないので、単純にここでは、`location.href`の値を変えると、他のページをブラウザーがロードしてくれるのだということだけを読み取って参考にして下さい。
51
+
52
+
41
53
  # サーバーサイド
42
54
 
43
55
  > When the parameter is an Array or Object, Express responds with the JSON
@@ -49,9 +61,5 @@
49
61
  res.send({ user: 'tobi' });
50
62
  ```
51
63
 
52
-
64
+ 一般的にはajax通信でサーバー側からクライアント側に返すデータ形式はjson`形式であることが多いかと思います。
53
- `res.render()`を使うのではなく、`res.send()`に`object{}`か`array[]`を渡して、クライアント側に`json`データを返すようにしてください。
65
+ `res.send()`に`object{}`か`array[]`を渡して、クライアント側に`json`データを返すようにしてください。
54
-
55
- # 補足
56
-
57
- 修正依頼欄でもお伝えした通り、今回のようなケースでは`ajax`通信を行う必要はないかと思います。

4

a

2018/04/25 12:44

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -17,7 +17,8 @@
17
17
  type: 'POST',
18
18
  url: 'https://jsonplaceholder.typicode.com/posts',
19
19
  data: JSON.stringify({ title: 'foo', body: 'bar', userId: 1 }),
20
- dataType: 'json'
20
+ dataType: 'json',
21
+ contentType: 'application/json'
21
22
  })
22
23
  .done(function(data) {
23
24
  console.log(data);

3

a

2018/04/25 08:35

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -49,4 +49,8 @@
49
49
  ```
50
50
 
51
51
 
52
- `res.render()`を使うのではなく、`res.send()`に`object{}`か`array[]`を渡して、クライアント側に`json`データを返すようにしてください。
52
+ `res.render()`を使うのではなく、`res.send()`に`object{}`か`array[]`を渡して、クライアント側に`json`データを返すようにしてください。
53
+
54
+ # 補足
55
+
56
+ 修正依頼欄でもお伝えした通り、今回のようなケースでは`ajax`通信を行う必要はないかと思います。

2

a

2018/04/25 08:23

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -35,4 +35,18 @@
35
35
 
36
36
  [https://codepen.io/anon/pen/Vxjjwb](https://codepen.io/anon/pen/Vxjjwb)
37
37
 
38
- Ajaxリクエストが成功した時に、他の`url`に遷移させたい場合は`location.href`の値を変更してください。
38
+ Ajaxリクエストが成功した時に、他の`url`に遷移させたい場合は`location.href`の値を変更してください。
39
+
40
+ # サーバーサイド
41
+
42
+ > When the parameter is an Array or Object, Express responds with the JSON
43
+ representation:
44
+
45
+ [https://expressjs.com/en/4x/api.html#res](https://expressjs.com/en/4x/api.html#res)
46
+
47
+ ```
48
+ res.send({ user: 'tobi' });
49
+ ```
50
+
51
+
52
+ `res.render()`を使うのではなく、`res.send()`に`object{}`か`array[]`を渡して、クライアント側に`json`データを返すようにしてください。

1

a

2018/04/25 08:20

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -1,3 +1,5 @@
1
+ # クライアントサイド
2
+
1
3
  ```
2
4
  <button id='submitButton'>Submit</button>
3
5
  ```
@@ -31,4 +33,6 @@
31
33
  });
32
34
  ```
33
35
 
34
- [https://codepen.io/anon/pen/Vxjjwb](https://codepen.io/anon/pen/Vxjjwb)
36
+ [https://codepen.io/anon/pen/Vxjjwb](https://codepen.io/anon/pen/Vxjjwb)
37
+
38
+ Ajaxリクエストが成功した時に、他の`url`に遷移させたい場合は`location.href`の値を変更してください。