JQuery.post, nasıl değişken dışında fonksiyonu değerini alabilirim?

2 Cevap php

Ben şu işlevi vardır:

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. Ben işlev içinde olduğum zaman nasıl img değerini alabilirim?
  2. Nasıl img = new value fonksiyonu içindeki taşları olabilir?

UPDATE

Bu kod değişkene yeni bir değer vermek DEĞİLDİR:

    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"

2 Cevap

UPDATE

Geri arama fonksiyonları ile çalışırken, onun önemli yürütme akışına dikkat etmek:

var img = "nice.jpg";

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

alert(img); // Alerts "nice.jpg"

(Ancak geri arama işlevi) geri arama sonrasında meydana gelen herhangi bir kod ilk olarak yürütülür çünkü öyle:

  1. img nice.jpg ayarlayın
  2. Çağrı $.post
  3. Çağrı alert
  4. img newname.jpg ayarlayın

Original answer:

Kullandığınız kodu, sonra yayınlanmıştır aynen varsa:

  1. img anonim geri çağırma fonksiyonu içinde zaten mevcuttur.
  2. Evet, siz de işlev içinde gelen img değerini değiştirebilirsiniz.

Eğer var anahtar kelime ile değişken bildirdiğinizde, bugünkü kapsamı özel, ama onun kapsamı içinde bulunan başka bağlamlarda kullanılabilir:

WORKS

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

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

DOES NOT WORK

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

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

Sen orada tam olarak ne yapmak gerekir - Beyan aynı isimde bir yerel değişkeni zaten olmadığı sürece globallerinin içinde görünür işlevleri vardır.