回答編集履歴

1

jQueryでGETリクエストをボディ無しとしていることの根拠を追記した。

2016/01/18 03:34

投稿

eripong
eripong

スコア1546

test CHANGED
@@ -21,3 +21,59 @@
21
21
  xhrを直接使えば実現はできるのではないかと思いますが、
22
22
 
23
23
  そもそも、なぜGETでjsonリクエストしたいのでしょうか?
24
+
25
+
26
+
27
+
28
+
29
+ ### jQueryでGETリクエストはボディ無しとしていることの根拠
30
+
31
+ [jQueryのリファレンス](http://api.jquery.com/jQuery.ajax/)のdataパラメータの説明を見ると、
32
+
33
+ > Data to be sent to the server. It is converted to a query string, if not already a string. It's appended to the url for GET-request
34
+
35
+
36
+
37
+ とありdataの内容をurlに付加すると記述されています。
38
+
39
+
40
+
41
+ また、[jQueryのソース](https://github.com/jquery/jquery/blob/e077ffb083743f4a4b990f586c9d25d787e7b417/src/ajax.js)を見ると、以下の様に、GETとHEADの場合にはhasContentがfalseになる様に判定しています。
42
+
43
+ ```lang-javascript
44
+
45
+ rnoContent = /^(?:GET|HEAD)$/,p
46
+
47
+ ```
48
+
49
+ ```lang-javascript
50
+
51
+ // Determine if request has content
52
+
53
+ s.hasContent = !rnoContent.test( s.type );
54
+
55
+
56
+
57
+ // Save the URL in case we're toying with the If-Modified-Since
58
+
59
+ // and/or If-None-Match header later on
60
+
61
+ // Remove hash to simplify url manipulation
62
+
63
+ cacheURL = s.url.replace( rhash, "" );
64
+
65
+
66
+
67
+ // More options handling for requests with no content
68
+
69
+ if ( !s.hasContent ) {
70
+
71
+
72
+
73
+ // Remember the hash so we can put it back
74
+
75
+ uncached = s.url.slice( cacheURL.length );
76
+
77
+ ```
78
+
79
+