我是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";
等基本变量时有效。
感谢您的帮助。
答案 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);
}) ;