2016-08-09 25 views
0

我這裏這Ajax代碼:從全球的ajax請求中設置javascript變量?

<script> 
    $('a[data-id]').click(function() { 
     var id = $(this).attr('data-id'); 
     var domain = $(this).attr('data-domain'); 
     $.ajax({ 
      url: 'getdata', 
      type: 'GET', 
      dataType: 'json', 
      data: {id: id, domain: domain}, 
      success: function (data) { 
       var domains = data.name + data.tld; 
       var tld = data.tld; 
       $('.resultdomain').html(domains); 

      } 
     }); 
    }); 
</script> 

此代碼的工作,但我的問題是,我想設置全局變量TLD在if語句中使用它們。

我想用這樣的變量在我的代碼:

if(tld == .de) 
{ 
document.write('<img src="imagelink.png" alt="denic" class="pull-right">') 
} 
elseif(tld == .com) 
{ 
document.write('<img src="otherimagelink.png" alt="core" class="pull-right">') 
} 

,但我無法弄清楚如何我可以設置TLD全局變量來在我的代碼隨處使用。

感謝您的幫助!

+0

你嘗試聲明變量全球,而不是作爲一個局部變量? (注意ajax是異步的,所以在成功回調運行之前,你不能真正使用全局變量的值。) – nnnnnn

+0

好吧,我嘗試了類似的東西,但並沒有真正成功。我真的沒有真正與JS很多.. – WellNo

回答

1

嘗試全局定義tdl變出tld變量的範圍被封閉在你的AJAX調用範圍

<script> 
     var tdl; 
     $('a[data-id]').click(function() { 
     var id = $(this).attr('data-id'); 
     var domain = $(this).attr('data-domain'); 
     $.ajax({ 
      url: 'getdata', 
      type: 'GET', 
      dataType: 'json', 
      data: {id: id, domain: domain}, 
      success: function (data) { 
       var domains = data.name + data.tld; 
       tld = data.tld; 
       $('.resultdomain').html(domains); 
       if(tld == .de) 
       { 
        document.write('<img src="imagelink.png" alt="denic" class="pull-right">') 
       } 
       elseif(tld == .com) 
       { 
        document.write('<img src="otherimagelink.png" alt="core" class="pull-right">') 
       } 
      } 
     }); 
    }); 


</script> 
+0

如果我想在我的if語句中使用該變量,只是沒有發生 – WellNo

+0

@WellNo檢查您的if語句當數據加載 –

+0

我已經做了document.ready圍繞if語句,但它仍然沒有做任何事情。 ajax代碼位於我的代碼的底部。頂部的if語句。它們之間有大約300行代碼,這就是爲什麼我需要獲得全局tld變量。 – WellNo

1

的。它只能在其定義的範圍內使用。我把它移到了你的AJAX調用之外。

<script> 
     var tld; 
     $('a[data-id]').click(function() { 
      var id = $(this).attr('data-id'); 
      var domain = $(this).attr('data-domain'); 
      $.ajax({ 
       url: 'getdata', 
       type: 'GET', 
       dataType: 'json', 
       data: {id: id, domain: domain}, 
       success: function (data) { 
        var domains = data.name + data.tld; 
        tld = data.tld; 
        $('.resultdomain').html(domains); 

       } 
      }); 
     }); 
    </script> 
+0

我做到了,但它仍然無法工作。如果我console.log(tld)我得到正確的輸出。如果我在我的代碼中使用它 - 就像if(tld == .de){...}什麼也沒發生 – WellNo

+0

不完全確定你的意思。你是否在'tld = data.tld;'設置了一個斷點?我認爲它應該是'tld = data.data.tld;' –

+0

我認爲tld = data.tld足夠,因爲如果我正在嘗試console.log它,我會得到正確的輸出。 – WellNo

0

您應該檢查字符串,而不是.de".de"

if(tld == ".de") 
    { 
     document.write('<img src="imagelink.png" alt="denic" class="pull-right">') 
    } 
    elseif(tld == ".com") 
    { 
     document.write('<img src="otherimagelink.png" alt="core" class="pull-right">') 
    } 
+0

是的,我的代碼中有這樣的情況。我剛剛在問題框 – WellNo

+0

中寫了if語句作爲快速示例您是否嘗試過'console.log(tld)'來檢查此變量的實際值? – nix9

+0

我做了,並在tld是正確的價值。但我不能在我的代碼中的任何地方使用它 – WellNo