var city;

      function getCity(){
         $.getJSON("http://ip-api.com/json/?callback=?", function(data) {
            city= data.city;
            alert(city);
         });
       }

       getCity();
       alert(city);


我两次警告同一个城市变量,一次在函数getcity()内,最后一次。但是它们都给出了不同的值。函数内部给出当前城市,而函数外部给出未定义。我想同时获得两个城市。

最佳答案

AJAX是异步的。
这意味着getCity将在以后的某个时刻检索数据,但是脚本不会停止,并且将触发alert(city),其中curcurty不包含任何值(未定义)

使用如下回调:



function getCity( callback ){
  $.getJSON("http://ip-api.com/json/?callback=?", function(data) {
    var city= data.city;
    alert(city);
    callback( city );
  });
}


getCity(function( city ){
   alert(city);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于javascript - 使用Java使用Json检索数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37374361/

10-14 22:26