/*常見錯誤示例 直接在 ajax 里面return 結果
*/
function demo(){
$.ajax({
url : 'test.do',
type : "post",
data : {},
async : false,
success : function(data) {
return 2;
}
});
}
/* 結果 無返回 */
兩個錯誤寫法會導致這種情況:
1.ajax默認為異步,異步不可以直接return返回結果
2.在ajax方法中直接return返回值,嵌套函數中,return該作用域函數的返回值,demo中,demo()為外部函數,return的結果對demo()無效
修改為:
41 /**
42 * (1)同步調用 (2)且在ajax對全局變量進行設值 (3)ajax函數外將變量return
43 * 結果:返回 2。成功獲取返回值
44 * 成功原因:先執行result = 2;再往下執行return result;
45 */
46 function demo1(){
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; //2
58 }
可以正常運行了。但是,ajax 改為同步請求會導致阻塞;ajax 需要 進行異步請求
/**
* 添加async:true.即修改為異步
* 結果以callback的形式回調
*/
function demo1(params,callback){
var result = 1;
$.ajax({
url : 'test.do',
type : "post",
data : {"params ":params },
async : true,
success : function(data) {
result = 2;
callback(result);
}
});
}
demo1("Value",function(rs){
//do someting
})
