【问题标题】:Having problems when returning a variable using jquery使用 jquery 返回变量时出现问题
【发布时间】:2011-11-29 05:37:44
【问题描述】:

我不知道为什么这段代码不起作用:S

function check(){
  var haySaldo=false;
  $.post("controlarSaldo.php", function(data)

 {  
        if(data>0)
          haySaldo=true;
  });

   return haySaldo;
}

信息:

数据=1000

我在 jquery 里面放了一个 haySaldo 的警报,我得到“真”,但在 jquery 外面我得到“假”:S

提前多谢!

【问题讨论】:

  • 你可能想试试data.length > 0

标签: jquery return


【解决方案1】:

您的 return 语句似乎在您的函数之外。

试试这个

$.post("controlarSaldo.php", function(data){   
    var haySaldo=false;    
    if(data>0){
        haySaldo=true;
    }
    return haySaldo;
});

【讨论】:

  • 我之前尝试过,但似乎没有正确返回变量的值
【解决方案2】:

抱歉,如果您已经理解这一点,但是这个 jQuery post 方法是 AJAX 请求的简写,这意味着您的代码不会等待 AJAX 请求完成,然后返回 haySaldo 的值(正如您所写的那样) .

从 success 方法内部调用 return 有点不清楚您打算做什么。也许如果您提供更多信息,人们可以提供更好的建议。

您可能想要查看的一件事是 jQuery 的 deferred objects。它可以让你做这样的事情。

function check(){
  return $.post("controlarSaldo.php").success(function(data)
    {  
    if(data>0)
      return true;
    else
      return false;
    });
}

然后您可以稍后在您的代码中执行(未经测试)。

check().done(function(resp){ 
  if(resp){
    // Do true thing
  }
  else{
    // Do false thing
  }
}); 

【讨论】:

  • 如果数据>0,我想返回 true,如果它是 0 我总是会出错,我不知道为什么。
  • 啊,是的,因为 check() 是一个 ajax 调用,所以不能简单地执行 check()==true,因为执行不会等待 check() 完成请求。
  • 我试过用 check().done(function(resp) 但它什么也没做,我的意思是,我在 if 和 else 里面放了一些代码,但似乎没有到达那里:S
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 2019-02-10
  • 1970-01-01
相关资源
最近更新 更多