jQuery - 检查json文件是否存在,如果不使用其他文件

时间:2016-11-14 08:25:26

标签: jquery json

我正在开发一个项目,根据用户语言,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文件是否存在且没有控制台错误的最佳方法是什么,如果不存在则加载默认值?

2 个答案:

答案 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;
?>