考虑代码
$(function(){
$.ajax({
url:'cartProcess.php',
data:{pname:prod, pqty:qty},
type:'GET',
dataType:'json',
success:function(json){
var k = eval(json);
var n = k[0].Name;
var q = k[0].Quantity;
var t = k[0].Total;
},
complete:{
$('input.newQty').live('change', function(){
alert(t/q);
});
}
});
});
firebug发出错误,说t未定义。 我如何在全球范围内使用这些变量?
答案 0 :(得分:4)
这应该可以解决问题:
$(function(){
var q = 0;
var t = 0;
$.ajax({
url:'cartProcess.php',
data:{pname:prod, pqty:qty},
type:'GET',
dataType:'json',
success:function(json){
var k = eval(json);
var n = k[0].Name;
q = k[0].Quantity;
t = k[0].Total;
},
complete:{
$('input.newQty').live('change', function(){
alert(t/q);
});
}
});
});
答案 1 :(得分:0)
Javascript变量总是在它们声明的函数范围内。就完整函数而言,t不存在。
答案 2 :(得分:0)
您在两个不同的范围内拥有此变量。像这样改变它
$(function(){
var k ,t;
$.ajax({
url:'cartProcess.php',
data:{pname:prod, pqty:qty},
type:'GET',
dataType:'json',
success:function(json){
k = eval(json);
var n = k[0].Name;
var q = k[0].Quantity;
t = k[0].Total;
},
complete:{
$('input.newQty').live('change', function(){
alert(t/q);
});
}
});
});
答案 3 :(得分:0)
您在t
函数中定义了局部变量success
- 它在complete
函数中不可见。尝试在$.ajax(...)
之前的“root”函数中定义它们。
答案 4 :(得分:0)
您的变量本地到您的成功功能。您应该最有可能将.live
代码移动到成功函数中。
你也不需要:
eval(json);
您已经将dataType设置为json,因此它应该自动作为json对象使用。