Php 在jQuery.post中,如何获取函数外部变量的值?
我有以下功能:Php 在jQuery.post中,如何获取函数外部变量的值?,php,jquery,Php,Jquery,我有以下功能: var id = "10"; var type = "Type A"; var img = "myimage.jpg"; jQuery.post("my/path/somefile.php", { instance: 'getUrl', ID : id, type: type}, function(data) { jQuery('#logo').attr("src",data.url + img); },"json"); 当我在函数中时,如何获取img的值 如何从
var id = "10";
var type = "Type A";
var img = "myimage.jpg";
jQuery.post("my/path/somefile.php", { instance: 'getUrl', ID : id, type: type},
function(data)
{
jQuery('#logo').attr("src",data.url + img);
},"json");
img
的值img=新值
更新 此代码不会为变量提供新值:
logoUrl = "noLogo.png";
jQuery.post("my/path/somefile.php", { instance: 'getUrl', ownerID : "123", type: "brand"},
function(logo)
{
logoUrl = logo.url + "logo/";
},"json");
alert(logoUrl); // This outputs noLogo.png"
更新 使用回调函数时,请务必注意执行流:
var img = "nice.jpg";
$.post('/path', { key: value }, function(data){
img = "newname.jpg";
});
alert(img); // Alerts "nice.jpg"
这是因为在回调之后(但不是在回调函数中)发生的任何代码都是首先执行的:
img
设置为nice.jpg
$。发布
警报
img
设置为newname.jpg
img
已在匿名回调函数中可用img
的值var
关键字声明变量时,该变量对其当前范围是私有的,但对其范围内包含的任何其他上下文都可用:
有效
function getPost(){
var img = "nice.jpg";
$.post('/path', {key:value}, function(data){
alert(img); // alerts "nice.jpg"
});
}
不起作用
function changeImage(){
var img = "nice.jpg";
getPost();
}
function getPost(){
$.post('/path', {key:value}, function(data){
alert(img); // img is undefined
});
}
更新 使用回调函数时,请务必注意执行流:
var img = "nice.jpg";
$.post('/path', { key: value }, function(data){
img = "newname.jpg";
});
alert(img); // Alerts "nice.jpg"
这是因为在回调之后(但不是在回调函数中)发生的任何代码都是首先执行的:
img
设置为nice.jpg
$。发布
警报
img
设置为newname.jpg
img
已在匿名回调函数中可用img
的值var
关键字声明变量时,该变量对其当前范围是私有的,但对其范围内包含的任何其他上下文都可用:
有效
function getPost(){
var img = "nice.jpg";
$.post('/path', {key:value}, function(data){
alert(img); // alerts "nice.jpg"
});
}
不起作用
function changeImage(){
var img = "nice.jpg";
getPost();
}
function getPost(){
$.post('/path', {key:value}, function(data){
alert(img); // img is undefined
});
}
您应该能够准确地执行您在函数中拥有的操作-全局变量在函数中是可见的,除非已经声明了同名的局部变量。您应该能够准确地执行您在函数中拥有的操作-全局变量在函数中是可见的,除非已经声明了同名的局部变量。好的,这是可行的。但是我无法设置
img=data.newValue
。为什么我只能读取数据而不能设置数据?@Steven,我补充了更多的解释,解释了为什么设置变量时会遇到问题。我理解顺序。但我没有得到的是如何在jQuery.post之后检索新值。看我上面的例子(和你的差不多)@Steven,只要把你的警报移到回调函数里面就行了。是的,我知道这是有效的。问题是,我需要在代码的后面使用这个新值——在回调函数之外。好的,这样就行了。但是我无法设置img=data.newValue
。为什么我只能读取数据而不能设置数据?@Steven,我补充了更多的解释,解释了为什么设置变量时会遇到问题。我理解顺序。但我没有得到的是如何在jQuery.post之后检索新值。看我上面的例子(和你的差不多)@Steven,只要把你的警报移到回调函数里面就行了。是的,我知道这是有效的。问题是我需要在回调函数之外的代码中进一步使用这个新值。