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

Ste*_*ven 0 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"); 
Run Code Online (Sandbox Code Playgroud)
  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"
Run Code Online (Sandbox Code Playgroud)

Dou*_*ner 7

UPDATE

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

var img = "nice.jpg";

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

alert(img); // Alerts "nice.jpg"
Run Code Online (Sandbox Code Playgroud)

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

  1. 设置imgnice.jpg
  2. 呼叫 $.post
  3. 呼叫 alert
  4. 设置imgnewname.jpg

原始答案:

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

  1. img 已在您的匿名回调函数中可用.
  2. 是的,您也可以更改img函数内部的值.

使用var关键字声明变量时,它对其当前作用域是私有的,但可用于其作用域中包含的任何其他上下文:

作品

function getPost(){
   var img = "nice.jpg";

   $.post('/path', {key:value}, function(data){
       alert(img); // alerts "nice.jpg"
   });
}
Run Code Online (Sandbox Code Playgroud)

什么都不行

function changeImage(){
   var img = "nice.jpg";
   getPost();
}

function getPost(){
   $.post('/path', {key:value}, function(data){
       alert(img); // img is undefined
   });
}   
Run Code Online (Sandbox Code Playgroud)