2013-07-16 153 views
0

這裏是我的代碼:參數傳遞給它的回調

首先,程序的執行來這裏:

refreshTree(function() { 
      $.ajax({ 
       type: "POST", 
       url: "/ControllerName/MethodName1", 
       success: function (data) { 
        refresh(); 
       } 
      }); 
     }); 

這裏是refreshTree()定義:

function refreshTree(callback) { 
    var isOk = true; 
    $.ajax({ 
     type: "GET", 
     url: "/ControllerName/MethodName2", 
     success: function(data) { 
      if (data == 'True') { 
       isOk = false; 
      } 
      callback(); 
     } 
    }); 
} 

而這裏的refresh()方法:

function refresh() { 
    if (isOk) { 
     //do something 
    } 
} 

問題是,我不知道如何在refresh()中得到isOk變量。有沒有辦法將變量發送到refresh(),而不是全局變量?

+2

*「是否有某種方式來送出可變刷新(),沒有它是一個全局變量?「*只需將該值作爲參數傳遞給回調。定義回調/函數來接受參數。 –

+0

爲什麼你不能將它作爲參數傳遞給'refresh'函數? –

回答

4

你捕捉它在一個封閉的位置:

refreshTree(function(isOk) { 
    $.ajax({ 
     type: "POST", 
     url: "/ControllerName/MethodName1", 
     success: function (data) { 
      refresh(isOk); 
     } 
    }); 
}); 

,並通過它在這裏:

function refreshTree(callback) { 
    var isOk = true; 
    $.ajax({ 
     type: "GET", 
     url: "/ControllerName/MethodName2", 
     success: function(data) { 
      if (data == 'True') { 
       isOk = false; 
      } 
      callback(isOk); 
     } 
    }); 
} 

這裏:

function refresh(isOk) { 
    if (isOk) { 
     //do something 
    } 
} 
1

簡單地把它作爲參數:

refreshTree(function(status) { 
     $.ajax({ 
      type: "POST", 
      url: "/ControllerName/MethodName1", 
      success: function (data) { 
       refresh(status); 
      } 
     }); 
    }); 

refreshTree()函數:

function refreshTree(callback) { 
var isOk = true; 
$.ajax({ 
    type: "GET", 
    url: "/ControllerName/MethodName2", 
    success: function(data) { 
    var isOk=true; 
     if (data == 'True') { 
      isOk = false; 
     } 
     callback(isOk); 
    } 
}); 

}

刷新()方法:

function refresh(status) { 
if (status) { 
    //do something 
} 
}