在jQuery.post中,如何获取变量外部函数的值?

我有以下function:

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"); 
  1. 当我进入函数时,如何获得img的值?
  2. 如何从函数内部设置img = new value

UPDATE

此代码不为变量赋予新值:

  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" 

UPDATE

使用回调函数时,重要的是要注意执行流程:

 var img = "nice.jpg"; $.post('/path', { key: value }, function(data){ img = "newname.jpg"; }); alert(img); // Alerts "nice.jpg" 

这是因为在回调之后发生的任何代码(但不在回调函数中)都是先执行的:

  1. img设置为nice.jpg
  2. 拨打$.post
  3. 通话alert
  4. img设置为newname.jpg

原始答案:

如果您使用的代码与发布的代码完全相同,那么:

  1. img已在您的匿名回调函数中可用。
  2. 是的,您也可以在函数内部更改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 }); } 

你应该能够完全拥有你所拥有的 – 全局变量在函数内部是可见的,除非已经声明了同名的局部变量。