我正在开发一个项目,根据用户语言,widget会加载包含该语言内容的json文件。但是由于有很多语言,我需要检查一下,如果该语言的json文件存在,如果没有,则需要加载fallback json文件(英文)。
我目前的代码:
var cookieLang = Cookies.get('language');
widget = "../json/widget_";
ext = ".json";
en = 'en';
lv = 'lv';
ru = 'ru';
if (cookieLang === en){
json_url = widget + en + ext;
}else if (cookieLang === lv){
json_url = widget + lv + ext;
}else if (cookieLang === ru){
json_url = widget + ru + ext;
}
$.getJSON(json_url, function(json){
...
});
使用当前代码,当文件不存在时,我得到控制台错误/json/widget_ru.json 404(Not Found)。
检查json文件是否存在且没有控制台错误的最佳方法是什么,如果不存在则加载默认值?
答案 0 :(得分:1)
如果您的应用仅使用JS,则以下代码将为您提供帮助
var cookieLang = Cookies.get('language');
widget = "../json/widget_";
ext = ".json";
en = 'en';
lv = 'lv';
ru = 'ru';
json_url_default = widget + en + ext;
if (cookieLang === en){
json_url = widget + en + ext;
}else if (cookieLang === lv){
json_url = widget + lv + ext;
}else if (cookieLang === ru){
json_url = widget + ru + ext;
}
$.ajax({
url: json_url,
type: "GET",
statusCode: {
404: function() {
$.getJSON(json_url_default, function(json){
//code here
});
}
},
success:function(json) {
//code here
}
});
答案 1 :(得分:0)
在服务器端实现文件检查代码。检查下面的代码(如果您的应用程序是PHP)。
客户端
var cookieLang = Cookies.get('language');
$.get('/json.php', {lang: cookieLang}, function(json){
//code here
}.'json');
文件: json.php
<?php
$cookieLang = $_GET['lang'];
$widget = "../json/widget_";
$ext = ".json";
$json_url_default = $widget . 'en' . $ext;
$json_url = $widget . $cookieLang . $ext;
if(file_exists($json_url))
echo file_get_contents($json_url);
else
echo file_get_contents($json_url_default);
exit;
?>