如何使用JQuery getJSON运行成功函数?

时间:2016-01-28 11:38:15

标签: javascript jquery json ajax getjson

我想将数据推送到数组,但由于AJAX的异步性,我不确定如何解决这个问题。

我似乎无法通过getJSON在线查找完整的示例。

我一直在关注文档here而没有运气/

我试过了:

var jsonLtdLng="https://maps.googleapis.com/maps/api/geocode/json?address=" + addressval;
var latlng;

$.getJSON(jsonLtdLng, function (data) {
  var lat = data.results[0].geometry.location.lat;
  var lng = data.results[0].geometry.location.lng;

  latlng = {lat: lat, lng: lng};

}).done(function() {
  markerlocations.push(latlng);
})//END JSON

var jsonLtdLng =" https://maps.googleapis.com/maps/api/geocode/json?address =" +地址;     var latlng;

$.getJSON(jsonLtdLng, function (data) {
  var lat = data.results[0].geometry.location.lat;
  var lng = data.results[0].geometry.location.lng;

  latlng = {lat: lat, lng: lng};
  markerlocations.push(latlng);
});

并且没有结果的变化。

有人知道这样做的正确方法并能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:0)

您需要push()success处理程序中有权访问请求返回的数据的数组。您最好将对象添加到数组中,而不是手动黑客攻击JSON字符串。从那里你可以将数组传递给你需要执行的任何函数。试试这个:

var markerlocations = [];
$.getJSON(jsonLtdLng, function (data) {
    var lat = data.results[0].geometry.location.lat; // note 'lat' here, not 'lng'
    var lng = data.results[0].geometry.location.lng;
    markerlocations.push({ lat: lat, lng: lng });
    doSomethingWithTheArray(markerlocations);
});

function doSomethingWithTheArray(arr) {
    for (var i = 0; i < arr.length; i++) {
        console.log(arr[i].lat, arr[i].lng);
    }
}

答案 1 :(得分:0)

试试这个。使用foreach创建数组。然后根据需要推送/追加数组。

    $.getJSON("url here", function(data) {
       $.each(data, function(key, value){

           // your custom code here
           var latlng = 'code you want';

       });
       markerlocations.push(latlng);
   }); 

答案 2 :(得分:0)

您需要在getJSON()函数外声明一个空数组。然后可以在getJSON回调中访问它。

var markerlocations = [];
$.getJSON(jsonLtdLng, function (data) {
    var lat = data.results[0].geometry.location.lat;
    var lng = data.results[0].geometry.location.lng;
    markerlocations.push({ lat: lat, lng: lng });
});

function(data)...是一旦获得响应就会执行的回调函数。在这种情况下,你不需要另一个done()方法。

&#13;
&#13;
var jsonLtdLng="https://maps.googleapis.com/maps/api/geocode/json?address=new york";
var latlng;
var markerlocations = [];
$.getJSON(jsonLtdLng, function (data) {
  var lat = data.results[0].geometry.location.lat;
  var lng = data.results[0].geometry.location.lng;

  latlng = {lat: lat, lng: lng};
  markerlocations.push(latlng);
  
  // just for testing
  for(var i = 0; i < markerlocations.length; i++){
    alert(markerlocations[i].lat + '===' + markerlocations[i].lng);
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;