2016-11-14 95 views
0

我正在開發一個項目,其中取決於用戶語言,小部件會使用該語言的內容加載json文件。但由於有很多語言,我需要檢查,如果該語言的json文件存在,如果不存在,則需要加載fallback json文件(英文)。jQuery - 檢查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控制檯錯誤(未找到)時,文件不存在。

什麼是檢查json文件是否存在並且沒有控制檯錯誤(如果不存在)的最佳方法是否加載默認值?

+0

阿賈克斯操作支持多個事件 –

+0

@Elvis檢查你最終打到服務器以獲取json文件的網址是什麼。 404意味着URL端點不存在。 – ScanQR

+0

網址正常,服務器上不存在文件。我需要的是在$ .getJSON函數之前檢查json文件是否存在。如果它返回錯誤404,json_url應該是「../json/widget_en.json」 – Elvis

回答

0

如果只使用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 
} 
}); 
+0

OK我想這樣的工作,現在雖然我仍然得到控制檯錯誤(404)文件不存在,難道這樣的:。 '代碼 $阿賈克斯({ 網址:json_url, 類型: 「GET」, 的StatusCode:{ 404:功能(){ json_url =插件+ EN + EXT; fotoWidget(); } }, 成功:函數(JSON){ fotoWidget() ; } });' – Elvis

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; 
?> 
+0

不幸的是我的應用程序只使用JS。 :( – Elvis

相關問題