你可以将jQuery函数的输出放在变量中吗?

时间:2013-12-17 14:09:39

标签: javascript php jquery mysql

我是JavaScript的新手,并且无法通过解释以下情况的教程。

我想在这里实现的目标是,我将获得我的jQuery函数的输出并将其放在变量中。更明确的是,我想从MySQL表中提取数据并将数据放入变量中。

然后我将使用该变量然后将在另一个变量中使用,这是一个计算。

该功能(我知道以下代码不起作用,但我不确定什么是正确的):

var sliderValue = function() {
      $.ajax({
        url: "select.php",
        type: "GET",
        success: function(result) {
          // alert(result);
          return result;
         }
      });
  });

使用变量(忽略totalCost变量):

var startValue = ((sliderValue - totalCost) / totalCost ) * 100;

我知道上面的变量计算在我使用var totalCost = "52";等基本变量时有效。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

你在这里缺少一些概念。首先,这一行:

var startValue = ((sliderValue - totalCost) / totalCost ) * 100;

无效,因为sliderValue是一个函数,而不是函数的结果。您可以并且经常会将函数作为参数传递,但在这种情况下它没有意义。

您可以调用该功能:

var startValue = ((sliderValue() - totalCost) / totalCost ) * 100;

或使用IIFE(立即调用的函数表达式):

var sliderValue = (function() {
    return "53";
})();

现在,sliderValue保存值53而不是对函数的引用,这有效:

var startValue = ((sliderValue - totalCost) / totalCost ) * 100;

然而,这些解决方案都不适用于ajax调用,因为你有。 Ajax调用是异步的,并且不能以这种方式工作。请参阅how to return the response from an ajax call

答案 1 :(得分:0)

你必须阅读一些关于AJAX的内容。 AJAX是关于发出异步请求。这意味着您的程序不会等到呼叫完成并收到结果,它只是拨打电话并继续。它通过调用成功(如果请求成功,否则为错误)函数通知您结果已传递给$ .ajax函数。因此,正确的方法就是通过回调函数并成功调用它。 所有这些都是jQuery。在使用jQuery进行AJAX请求之前,您应该学习使用AJAX

var sliderValue = function(callback) {
      $.ajax({
          url: "select.php",
          type: "GET",
          success: function(result) {
              // alert(result);
              callback(result);
          }
      });
 });

然后

sliderValue(funciton(result){
    //And you have your result here
    alert(result);
}) ;