我想问你一点帮助。我的问题很难,但我希望你能帮助我:) 我有一个REST API集合。 URL1提供名称列表。 URL2包含URL1名称的属性。 (例如URL2?name = URL1.name)。
网址1 - >亚当,朱丽叶,乔治
URL2?name = Adam - > ID,Property1等 (结果是JSON)
我为解决方案制作了这段代码:
$(document).ready(function() {
var $data_v = $('#content');
var name = []; //store the name list
$.ajax({
type:'GET',
url: "URL1",
success: function(data){
$.each(data, function(i, data){
name[i] = data;
console.log("Array: "+name[i]);
});
}
}).done(function(){
console.log("Succesful Array upload. The array size: "+name.length);
for (var item_i=0; item_i<10; item_i++) { //name.length
(function(item_i) { // protects i in an immediately called function
$.getJSON( "URL2/?"+name[item_i]+"&any_other_property", function( data_items ) {
var items = [];
console.log("ID"+data_items[0]);
console.log("Property 1"+data_items[1]);
});
})(item_i);
}
});
console.log("Outside The array size: "+name.length);
});
问题1:REST服务器有一个请求最大值,所以如果我运行此代码它不显示所有属性,因为它停止并且我得到503错误。我尝试了setTimeout和.delay(),但是如果我运行这段代码它并不关心它们。
问题2:我尝试调用前10个属性,但返回值不按顺序排列(例如ID:1,0,4,6,2,3 ......)。
所有要点对我来说都很重要,因为我想将这些数据上传到数据库。
您有什么想法或经验,我该如何解决这个问题? 我会非常感谢任何想法。 提前谢谢。
PS:网址很抱歉,但我无法发布。
答案 0 :(得分:0)
试试这个递归函数:
var item_i = 0;
function recursiv(item_i) {
$.getJSON( "URL2/?"+name[item_i]+"&any_other_property", function( data_items ) {
var items = [];
console.log("ID"+data_items[0]);
console.log("Property 1"+data_items[1]);
item_i++;
if(item_i <10) {
recursiv(item_i);
}
});
};
答案 1 :(得分:0)
感谢您的想法和帮助。 我的解决方案是这个小代码:
jQuery.ajaxSetup({async:false});
请求非常慢,但不会给出503错误。