簡體   English   中英

無法為變量設置新值

[英]Can't set new value for variable

我可能遺漏了一些非常明顯的東西,但我沒有遇到這個問題。

在從json feed獲取值之后,我很容易嘗試設置變量的值。

我正在使用jquery來獲取jsonp feed然后將值存儲在我稍后可以使用的變量中,但它不起作用且值不會被存儲。 如果我在console.log中返回它返回的值。

jQuery(document).ready(function($){
    serverip = "<?php echo $_SERVER['SERVER_ADDR']; ?>";
    stream_domain = "";

    $.ajax({url: 'http://load.cache.is/inspired.php?ip=' + serverip, dataType:'jsonp',
      success:  function(data){
        $.each(data, function(key, val) {
            if (key == serverip){
               stream_domain = val;
               console.log("val: " + val);
            }
        });
      }
    });

    console.log(stream_domain);
});

這是jsfiddle.net上的相同代碼

ajax調用是異步的,因此事件的時間軸是:

  1. 做一個ajax電話
  2. 的console.log
  3. ajax調用成功,變量賦值

在使用變量之前等待成功事件。 這是你更新的jsFiddle ,我在成功回調函數中添加了一個函數:

    function continueWorking(){            
        console.log(stream_domain);
        $("<span>" + stream_domain + "</span>").appendTo(".variable");
    }

您正在進行異步請求。 因此,在成功之前執行的附加HTML的代碼會分配變量。

在發出請求后,ajax請求后面的代碼將不可復制地執行。 因此,如果您需要響應數據,那么您應該從成功方法移動您的追加代碼,類似於:

if (key == serverip){
    stream_domain = val;
    console.log("val: " + val);
    $("<span>" + val + "</span>").appendTo(".json");
    $("<span>" + stream_domain + "</span>").appendTo(".variable");
}

DEMO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM