我初始化内$。员额值,但外界$。员额
不能访问它下面是我的代码:
$.post(
"index.php?component=static_content&action=rules_count",
{ region:rname,page_url:page_url},
function(data1) {
alert(data1);
var num = $(data1).find('.ruleNum').html();
}
);
alert(num);
但上线alert(num);
有错误num is undefined
。任何想法我做错了什么?
非常感谢。
你声明的变量num
您的文章回调内部,使得功能外的变量显然是不确定的
但是,即使你外面定义它,它的价值赢得因为ajax是异步的(所以当你提醒变量ajax调用仍在运行时)
如果你需要访问num,即使外面只是调用另一个函数传递变量,例如
$.post(
"index.php?component=static_content&action=rules_count",
{ region:rname,page_url:page_url},
function(data1) {
alert(data1);
continueProcess(data1);
}
});
var continueProcess = function(num) {
alert(num);
}
或使用Deferred Objects
(因为Ajax方法返回,因为jQuery 1.5
承诺),你也可以做
$.when($.post(...).done(function(num) {
alert(num)
});
num
是传递给$.post()
的匿名函数中的局部变量。它不在函数的范围之外存在,但你从完全不同的范围访问它。
除此之外,变量将在以后定义,而不是在您使用它时定义。如果它是全局变量,则在您使用该变量时它仍然不可用,因为只有在POST操作完成后才会定义之后。
因此,您只能在该功能中使用num
。以下是你可以做一个例子:
function numWasReceived(num) {
alert(num);
}
$.post(
"index.php?component=static_content&action=rules_count",
{ region:rname,page_url:page_url},
function(data1) {
alert(data1);
var num = $(data1).find('.ruleNum').html();
numWasReceived(num);
}
);
此外,应该牢记,那'$ .post'是 - 异步。 – Sirko
那我该怎么做才能把这个价值拿到外面去呢? – guitarlass
谢谢,有没有别的办法? – guitarlass
既然你宣布num
只在$.post()
它无法在全球范围内。
这里的功能和范围进行深入的解释:https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope
如果有人解释downvote,我可以改进我的答案(和我自己) – fcalderan