用ajax实时更新javascript变量

jef*_*ind 7 javascript ajax jquery function

我有一个需要进行数值计算的javascript函数.此计算中使用的某些数字存储在数据库中,它们将根据用户填写在线表单的方式而有所不同.一旦用户填写表单,他们将单击CALCULATE按钮.此时,在JS函数中,我想使用ajax从数据库中获取与用户选择的其他值相对应的值.

举个简单的例子:有3种尺寸的T恤,每种尺码都有不同的价格(存储在数据库中).用户选择大小,当他们点击CALCULATE时,我使用ajax来获得与他们选择的大小相关的价格.

问题是,我想使用ajax更新一些我稍后将在脚本中使用的变量.我现在尝试这样做的方式不起作用,脚本中的变量没有从ajax更新,我只能从successajax调用函数内的数据库中访问值.我理解这是因为ajax本质上是异步的,并且需要一些时间,等待从服务器返回数据,而该函数仍然继续运行

在下面的示例中,ajax调用返回JSON数据,并且我有一个调用的函数isjson(),用于测试返回的字符串是否实际上是JSON数据.

示例代码:

function calculate_cost(){

    var price = 0;
    var size = $('form#tshirt_form [name="size"] option:selected').val();
    $.ajax({
        url:'my_script.php',
        type:'post',
        data:'select=price&table=tshirts.prices&where=size = "' + size + '"',
        success:function(data){
            if(isjson(data)){
                data = $.parseJSON(data);
                data = data[0];
                price = data['price'];
            }else{
                //display error getting data
            }
        }
    });
    //  continue code for calculation
    //  this alert will display "0", but I want the price from the database in there
    alert(price);
    //perhaps do other ajax calls for other bits of data
    //...
    return final_price;
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何实现这一点,用ajax实时更新变量?

非常感谢!

**编辑**

感谢大家的帮助,我理解ajax是异步的.我真的想要一个答案,我不必在success函数内部继续计算,因为我的实际问题涉及来自不同表格的许多值.我还希望将来可以扩展计算,而不会让它太复杂.如果这是不可能的,那么,我将不得不忍受这一点.;-)

**编辑2**

好的,我们得到了答案:当然它在文档页面的顶部附近,: - /抱歉.asyncjQuery ajax调用中的属性. http://api.jquery.com/jQuery.ajax/

Sha*_*oli 12

这是因为ajax默认情况下异步执行请求,并且在控件到达alert(price);请求之前尚未执行并price仍保留旧值.

如果要同步执行它,则可以设置async为false.

$.ajax({
    async: false,
    .....
    .....
});
Run Code Online (Sandbox Code Playgroud)