jQuery脚本的一个奇怪问题

时间:2010-06-23 23:09:59

标签: jquery ajax

我有以下jQuery脚本:

$(document).ready(function() {
        $.ajax({
            url: 'temp.ajax.php',
            type: 'GET',
            success: function(data){
                $("#total_plus_aditional").val(data);                   
            }
        });

        tempTotal = parseFloat($("#total_plus_aditional").val());

        $("#cost_valoare").change(function(){                   
            var sum = parseFloat(tempTotal) + parseFloat($("#cost_valoare").val());
            $("#total_plus_aditional").val(sum);  
        });
});

现在,这就是我想要做的事:temp.ajax.php返回一个浮点值。首先,将浮点值分配给html中的输入字段,以便用户可以看到该数字。然后,如果用户在另一个输入字段中输入一个数字,我想将这两个数字相加并重写第一个输入字段中的值。

问题在于,如果我在第二个字段中写入数字,则第一个字段的内容(具有ajax调用返回的浮点数)将变为NaN。

为什么会这样?

P.S。我将ajax调用返回的值保存在一个单独的变量中,因为如果用户改变主意并在输入第二个字段后输入另一个值,我想拥有相同的值。

1 个答案:

答案 0 :(得分:3)

初始化全局变量“tempTotal”的代码行几乎肯定会在AJAX调用从服务器返回之前运行。因此,它是一个NaN,因为该字段在运行时是空的。

将这行代码放在“成功”函数中,看看会发生什么。

编辑 - 等等 - 为什么要在同一个值上调用parseFloat两次?不要那样做。真的,整个“tempTotal”的东西都没用。只需让“更改”处理程序执行此操作:

var sum = parseFloat($('#total_plus_aditional').val()) + parseFloat($("#cost_valoare").val());

如果您确实必须保存该值,请在AJAX响应中执行此操作:

        success: function(data){
            $("#total_plus_aditional").val(data);   
            tempTotal = parseFloat(data);                
        }

然后不再在“更改”处理程序中再次调用parseFloat。