如果jquery中,獲取不到ajax返回值。
兩個錯誤寫法會導致這種情況:1.ajax未用同步 2.在ajax方法中直接return返回值。
下面列舉了三種寫法,如果想成功獲取到返回值,參考第三種寫法:
1 /**
2 * 方式:(1)同步調用 (2)在ajax函數中return值
3 * 結果:返回 1。未成功獲取返回值
4 * 失敗原因:ajax內部是一個或多個定義的函數,ajax中return返回值,
5 * 返回到ajax定義函數,而不是返回到ajax外層的函數checkAccount1()
6 */
7 function checkAccount1(){
8 var result = 1;
9 $.ajax({
10 url : 'test.do',
11 type : "post",
12 data : {},
13 async : false,
14 success : function(data) {
15 return 2;
16 }
17 });
18 return result;
19 }
20
21 /**
22 * (1)異步調用 (2)在ajax對全局變量進行設值 (3)ajax函數外將變量return
23 * 結果:返回 1。未成功獲取返回值
24 * 失敗原因:ajax請求和后面的return result語句異步執行,
25 * 導致return result比result = 2先執行並返回result的值
26 */
27 function checkAccount2(){
28 var result = 1;
29 $.ajax({
30 url : 'test.do',
31 type : "post",
32 data : {},
33 async : true,
34 success : function(data) {
35 result = 2;
36 }
37 });
38 return result;
39 }
40
41 /**
42 * (1)同步調用 (2)且在ajax對全局變量進行設值 (3)ajax函數外將變量return
43 * 結果:返回 2。成功獲取返回值
44 * 成功原因:先執行result = 2;再往下執行return result;
45 */
46 function checkAccount3(){
47 var result = 1;
48 $.ajax({
49 url : 'test.do',
50 type : "post",
51 data : {},
52 async : false,
53 success : function(data) {
54 result = 2;
55 }
56 });
57 return result;
58 }

