我有以下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调用返回的值保存在一个单独的变量中,因为如果用户改变主意并在输入第二个字段后输入另一个值,我想拥有相同的值。
答案 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。