[英]How to run success function with JQuery getJSON?
我想将数据推送到数组,但是由于AJAX的异步性,因此不确定如何处理。
我似乎无法在网上找到有关使用getJSON完成此操作的完整示例。
我一直在这里遵循文档,没有运气/
我努力了:
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=” + 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};
markerlocations.push(latlng);
});
以及没有任何结果的变化。
有谁知道这样做的正确方法,可以指出正确的方向吗?
您需要将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);
}
}
尝试这个。 使用foreach创建数组。 然后根据需要推送/追加数组。
$.getJSON("url here", function(data) {
$.each(data, function(key, value){
// your custom code here
var latlng = 'code you want';
});
markerlocations.push(latlng);
});
您需要在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()方法。
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); } });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.