回答編集履歴

1

追記

2018/03/21 04:22

投稿

退会済みユーザー
test CHANGED
@@ -55,3 +55,53 @@
55
55
  WCF と jQuery AJAX
56
56
 
57
57
  [http://surferonwww.info/BlogEngine/post/2015/10/15/wcf-and-jquery-ajax.aspx](http://surferonwww.info/BlogEngine/post/2015/10/15/wcf-and-jquery-ajax.aspx)
58
+
59
+
60
+
61
+ **【2018/3/21 13:20 追記】**
62
+
63
+
64
+
65
+ 質問に対する 2018/03/21 12:33 の私のコメントで「サーバー側は今の実装のまま、即ち JSONP としたいということであれば、jQuery ajax のコードに若干の変更をすれば解決できると思います。それを回答欄に追記しておきます」と書きましたが、それを以下に書きます。
66
+
67
+
68
+
69
+ JSONP でコールバック名が q すなわち q( ... JSON 文字列 ... ) という応答が返ってくる場合(コールバック名は q で固定と理解)、jQuery ajax のパラメータを以下のようにします。
70
+
71
+
72
+
73
+
74
+
75
+ ```
76
+
77
+ $.ajax({
78
+
79
+ url: xxxx,
80
+
81
+ dataType: 'jsonp',
82
+
83
+ jsonp: false,
84
+
85
+ jsonpCallback: 'q'
86
+
87
+ }).done(function (result) {
88
+
89
+ ・・・以下略・・・
90
+
91
+ ```
92
+
93
+
94
+
95
+ xxxx は要求先の URL です。
96
+
97
+
98
+
99
+ ```dataType: 'jsonp'``` とすると、jQuery.ajax を呼び出した時点で script タグを生成し DOM ツリーへ追加してくれます。(script タグを生成して DOM ツリーに追加するためのスクリプトを自力で書く必要はありません)
100
+
101
+
102
+
103
+ コールバック名を q とする、すなわち q( ... JSON 文字列 ... ) という応答が返ってくる場合は ```jsonp: false, jsonpCallback: 'q'``` と設定します。
104
+
105
+
106
+
107
+ 応答が返ってくるとコールバックが呼び出され、コールバックの引数に設定された JSON 文字列が JavaScript オブジェクトにパースされ、```done(function (result) { ...``` の result に渡されます。