为此创造了一个小提琴,因为它很简单,但它不起作用;
var url = 'https://api.tiles.mapbox.com/v3/mapbox.geography-class.json';
function getData (url) {
return $.ajax({
'type': "POST",
'url': url
});
};
$(document).ready(function(){
var a = null;
getData(url).done(function(data){ a = data; });
alert(a);
});
也许是凌晨?
小提琴:https://jsfiddle.net/nextgenmappinginc/r88356tu/
目标:
我有多个包含geojson数据的本地文件。哪个我将作为一个数组返回给我。我想遍历这些创建对象并将这些对象推送到数组中。然后从所有这些ajax调用创建的新数组中。我想将此数组传递给将执行开放层代码的函数。
更新并完成了不同的小提琴
https://jsfiddle.net/nextgenmappinginc/x1yasngy/
但是。问题仍然存在即使您通过ASYNC也只能根据请求触发该功能。然后它仍然在函数中。从技术上讲,为什么它不能将它传递给另一个可以控制它的功能呢?
在小提琴中,您只需更改网址即可获得请求响应
//var url = 'https://api.tiles.mapbox.com/v3/mapbox.geography-class.json';
var url = {url : 'clientData/10BC99F2-05FD-4847-A277-2979C83BB42A/geojson/E36CC45E-C1B8-4C26-A714-EBA91ACE7C1C.js'}
var files = [];
files.push(url);
function getData (files) {
var fileObjects = [];
for (i=0; i<files.length; i++){
$.ajax({
'type': "GET",
'url': files[i].url,
success: function (response){
fileObjects.push(response);
}
});
}
consoleMe(fileObjects);
}
function consoleMe(data){
console.log(data);
}
getData(files);
答案 0 :(得分:0)
在您的ajax代码中添加async:false,
。删除此行
getData(url).done(function(data){ a = data; });
并添加以下行
getData(url).done(function(data){ a = data; });
尝试以下示例,这肯定会起作用
var url = 'https://api.tiles.mapbox.com/v3/mapbox.geography-class.json';
function getData (url) {
return $.ajax({
'type': "POST",
async:false,
'url': url
});
};
$(document).ready(function(){
var a = null;
a = getData(url);
console.log(a);
alert(a);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:0)
你想&#34;得到&#34;数据,但您对API发出post
请求。其次.done
是一个异步函数。它将在API向您发送数据时执行。
var url = 'https://api.tiles.mapbox.com/v3/mapbox.geography-class.json';
function getData (url) {
return $.ajax({
'type': "get",
'url': url
});
};
$(document).ready(function(){
getData(url).done(function(data){
// here you have access to data
alert(data)
});
});