将json值作为函数外部的变量传递

时间:2015-09-07 17:33:14

标签: javascript json

我正在研究如何在json函数之外推送变量的值。我将Google地图和Instagram的API集成在一起,因此我将经度和纬度坐标传递给glat和glng到var url(这是在google函数之外。目前我正在使用PHP并不熟悉json。

  var glat;
  var glng;

  //Google maps latitude and coordinates
  $.getJSON(mapurl, function(google){
    glat = google.results[0].geometry.location.lat;
    glng = google.results[0].geometry.location.lng;
    console.log('<?php echo urlencode($_GET['location']);?>');
    console.log(glat);
    console.log(glng);
    //return glat;
  });

  var url = "https://api.instagram.com/v1/media/search?lat=" + glat + "&lng=" + glng + "&distance=1000&client_id=<?php echo $client_id; ?>&count=40&callback=?";
  //This pulls the instagram images
  console.log(url);
  //Instagram Feed
  $.getJSON(url, function (response) {
    //http://techmonks.net/instagram-using-the-api/
    for(var i = 0; i < 40; i++){
      $("#feed ul").append("<li><a target='_blank' href='"+response.data[i].link +"'><img src='"+response.data[i].images.low_resolution.url+"'/></a></li>");
    }
  }); 

1 个答案:

答案 0 :(得分:2)

$.getJSON会导致异步 XMLHttpRequest。由于这是异步的,因此当您尝试将URL定义为指向Instagram时,未定义lat和lng。

var glat;
var glng;

//Google maps latitude and coordinates
$.getJSON(mapurl, function(google){
  glat = google.results[0].geometry.location.lat;
  glng = google.results[0].geometry.location.lng;
  console.log('<?php echo urlencode($_GET['location']);?>');
  console.log(glat);
  console.log(glng);

  var url = "https://api.instagram.com/v1/media/search?lat=" + glat + "&lng=" + glng + "&distance=1000&client_id=<?php echo $client_id; ?>&count=40&callback=?";
  console.log(url);

  $.getJSON(url, function (response) {
    //http://techmonks.net/instagram-using-the-api/
    for(var i = 0; i < 40; i++){
      $("#feed ul").append("<li><a target='_blank' href='"+response.data[i].link +"'><img src='"+response.data[i].images.low_resolution.url+"'/></a></li>");
    }
  });
});