2013-04-06 129 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