2017-05-03 8 views
0

いくつかのJSONファイルを取得しようとしています。したがって、どのURLが動作するかは不明です。したがって、すべてのURLを試してみる方法を探していて、失敗した場合は別のURLを試します。複数のURLにgetjson()を使用する方法

のURLのように:

www.domain.com/a.json 
www.domain.com/b.json 
www.domain.com/c.json 

var url = "www.domain.com"; 
 
var file1 = "/a.json"; 
 
var file2 = "/b.json"; 
 
var file3 = "/c.json"; 
 

 
$.getJSON(url + file1, function(json) { 
 
    console.log("JSON Data: " + json.users[ 3 ].name); 
 
});
また

各JSONファイルの構造は、そのファイルに応じて、同じではありません私はそれにアクセスするための別の方法を持っている必要があります。ファイルa.jsonについて言えば、json.users [3] .nameでデータにアクセスしますが、ファイルb.jsonでは同じデータにjson.sources.users[3].nameでアクセスします。

どうして私は失敗するたびに新しいURLを試すような方法を作ることができますか? 失敗すると、既存のファイル(404)または同じ股関節のエラーではない可能性があります。

ありがとうございます。

答えて

2

1つの呼び出しが失敗した場合は、$.getJSONのjquery failメソッドを使用して次の呼び出しに進みます。このような何か:ドキュメントへ

$.getJSON(url + file1, function(json) { 
    //do something with file1 
}).fail(function() { 
    $.getJSON(url + file2, function(json) { 
     //do something with file2 
    }).fail(function() { 
     $.getJSON(url + file3, function(json) { 
      //do something with file3 
     }) 
    }); 
}); 

リンク:http://api.jquery.com/jquery.getjson/#jqxhr-object

1

使用jQueryのPromise.all実装:$.whenは:

var url = "www.domain.com"; 
var urls = ["/a.json", "/b.json", "/c.json"]; 
var requests = urls.map(function(path) { 
    return $.getJSON(url + path); 
}); 

$.when.apply($, requests).then(function(a_resp, b_resp, c_resp) { 
    console.log("JSON Data: ", a_resp, b_resp, c_resp); 
}); 

これは、あなたがすべての要求が完了するまで待って、あなたはへのアクセス権を与えることができますすべての回答。

関連する問題