我正在将一个JSON文件从相对本地路径加载到我的基于Web的应用程序中。为此,我使用XMLHttpRequest对象,如下所示:
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', 'myFyle.json', true);
xobj.onreadystatechange = function () {
if (xobj.readyState == 4 && xobj.status == "200") {
callback(JSON.parse(xobj.responseText));
}
}
xobj.send(null);
我的问题是,当找不到myFyle.json
时,我无法管理浏览器错误(net :: ERR_FILE_NOT_FOUND)。我希望在发生这种情况时加载标准.json
文件(例如myStandardFile.json
)。
有人有想法这样做吗?
提前致谢!
佩德罗。
答案 0 :(得分:0)
您可以使用function load(file, callback) {
var defaultFile = "myStandardFile.json";
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', file, true);
xobj.onreadystatechange = function() {
if (xobj.readyState !== 4) return true;
if (xobj.status === 200) {
callback(JSON.parse(xobj.responseText));
//File not found.
//The second condition just to prevent endless calls
//in case if your default file doesn't exist
} else if (xobj.status === 404 && file !== defaultFile) {
load(defaultFile, callback);
}
}
xobj.send(null);
}
load("myFyle.json", function(data) {
console.log(data);
})
来检测未找到的文件'。
网站托管服务器通常会生成" 404 Not Found" 用户尝试关注损坏或死链接时的网页;
如果是404,您可以加载默认文件,如下所示:
function load(file, callback) {
var defaultFile = "https://httpbin.org/user-agent";
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', file, true);
xobj.onreadystatechange = function() {
if (xobj.readyState !== 4) return true;
if (xobj.status === 200) {
callback(JSON.parse(xobj.responseText));
//File not found
} else if (xobj.status === 404 && file !== defaultFile) {
load(defaultFile, callback);
}
}
xobj.send(null);
}
load("https://httpbin.org/inexistentFile.json", function(data) {
console.log(data);
})
演示:
<div ng-repeat="(num, obj) in questions">
Number: {{num}}
Category 1: {{obj.category1}}
</div>
&#13;
我希望这会对你有所帮助。