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

回答編集履歴

2

基本的なAjaxの仕組みについて誤った理解をしていました。回答を是正しました。

2019/01/15 12:00

投稿

noka_blank
noka_blank

スコア252

answer CHANGED
@@ -30,4 +30,36 @@
30
30
  }
31
31
  ```
32
32
 
33
- このようにすれば、動作すると思います。
33
+ ~~このようにすれば、動作すると思います。~~
34
+
35
+ この方法では動作しません。
36
+ 以下のようにする必要があります。
37
+
38
+ ```js
39
+ function sample(samNo,samNo2) {
40
+ var prm = {
41
+ samNo:samNo,
42
+ samNo2:samNo2
43
+ };
44
+ var ajax = $.ajax({
45
+ url: './api/sample.php',
46
+ type: 'POST',
47
+ cache: false,
48
+ dataType: 'json',
49
+ data: prm,
50
+ async: false
51
+ });
52
+ return ajax;
53
+ }
54
+ function success(o) {
55
+ if (o.status != 0) {
56
+ alert(o.message);
57
+ return false;
58
+ }
59
+ alert(o.data['hoge']);
60
+ return o.data['hoge'];
61
+ }
62
+
63
+ var sample = sample(1, 2);
64
+ success(sample.responseJSON);
65
+ ```

1

指摘箇所が間違っていたようです。訂正しました。

2019/01/15 12:00

投稿

noka_blank
noka_blank

スコア252

answer CHANGED
@@ -1,7 +1,33 @@
1
1
  ```js
2
+ function sample(samNo,samNo2) {
3
+ var prm = {
4
+ samNo:samNo,
5
+ samNo2:samNo2
6
+ };
2
- // こうなっているところ
7
+ // 返り値一時的に保存
8
+ var ajax = $.ajax({
9
+ url: './api/sample.php',
10
+ type: 'POST',
11
+ cache: false,
12
+ dataType: 'json',
13
+ data: prm,
14
+ async: false,
15
+ success: function(o) {
16
+ if (o.status != 0) {
17
+ alert(o.message);
18
+ return false;
19
+ }
20
+ alert(o.data['hoge']);
3
- return o.data[hoge];
21
+ return o.data['hoge'];
22
+ },
23
+ error: function(xhr, textStatus, errorThrown) {
24
+ alert("ajax Error!!!\n" + textStatus + ' ' + errorThrown);
25
+ return false;
26
+ }
27
+ });
28
+ // 関数の返り値としてもreturn
29
+ return ajax;
30
+ }
31
+ ```
4
32
 
5
- // こうすれば動と思います。
33
+ のよすれば作すると思います。
6
- return o.data['hoge'];
7
- ```