2013-12-17 94 views
-3

我是JavaScript新手,无法跨越解释以下情况的教程。你可以把一个jQuery函数的输出放入一个变量中吗?

我想在这里实现的目标是我将得到我的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";时有效。

感谢您的帮助提前。

+0

不能确定你所要求的。如果PHP文件'选择。php'输出一个数字,你的计算应该工作。假设你将'var totalCost'设置在其他地方...? – superphonic

+1

@웃웃웃웃웃你不能 –

+0

php输出一个数字。 totalCost只是一个现在包含一个数字的变量。当我弄清楚如何正确执行AJAX调用时,它会得到类似的处理。 – dvoutt

回答

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

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); 
}) ; 
相关问题