2013-04-06 188 views
0

我想從一個「孩子」(我不知道正確的術語)函數返回父函數的返回...如何是正確的如何做到這一點? check_data()沒有返回true或falseJavaScript的子函數通過返回父函數返回

function check_data(type,field){ 
    var chkvalue = $(field).val(); 
    $.post("mods/ajax.fieldchk.php", { 
     chkvalue: chkvalue, 
     type: type 
    }, 
    function(result){ 
     if(result==0){ 
      $(field).css({'background-color': '#faa', 'border': '1px solid #f00'}); 
      return false; 
     }else if(result==1){ 
      $(field).css({'background-color': '#afa', 'border': '1px solid #0f0'}); 
      return true; 
     } 
    }; 
} 

日Thnx

+1

不能從異步操作返回如。員額'$()'。閱讀以上主題以瞭解使用回調函數和Deferred對象的信息。 – 2013-04-06 21:59:55

+0

$ .post默認是一個異步函數,所以你的check_data函數會在你期待之前退出 – EmeraldCoder 2013-04-06 22:00:06

回答

3

由於$.post是你不能用它來對check_data返回數據的異步函數。但是,您可以傳遞一些回調並使用true/false參數執行。

事情是這樣的:

function check_data(type,field,callback){ 
    var chkvalue = $(field).val(); 
    $.post("mods/ajax.fieldchk.php", { 
     chkvalue: chkvalue, 
     type: type 
    }, 
    function(result){ 
     if(result==0){ 
      $(field).css({'background-color': '#faa', 'border': '1px solid #f00'}); 
      callback(true); 
     }else if(result==1){ 
      $(field).css({'background-color': '#afa', 'border': '1px solid #0f0'}); 
      callback(false); 
     } 
    }; 
} 
+0

我認爲你應該提供一個示例回調函數。 – 2013-04-06 22:06:05

+0

@LeeTaylor我會,如果我知道他想要實現什麼 – letiagoalves 2013-04-06 22:09:06