我正在处理一个同时显示实时和前端(javaScript)验证的表单。但我也希望向用户显示后端错误消息,以便前端验证允许请求通过。
我的后端错误消息是英文atm,我想知道如何翻译它们。我不想在后端翻译它。
示例:
后端回复:
{ "errors": [ {"code": 409, "message" : "An Application has already been created. "}] }
采取"消息"并翻译字符串,以便我可以在页面上的元素中打印它。
我现在的表现如何:
var ErrorStatusHandler;
ErrorStatusHandler = (function() {
function ErrorStatusHandler() {}
ErrorStatusHandler.prototype.errorMessage = function(e) {
var responseText, translatedResponseText;
responseText = e.slice(12, -2);
if (responseText === "An Application has already been created.") {
translatedResponseText = responseText.replace("An Application has already been created.", "En ansökan med detta personnummer existerar redan.");
} else {
//* some other error
translatedResponseText = responseText;
}
return translatedResponseText;
};
return ErrorStatusHandler;
})();
但我确信有更好的方法可以做到这一点,我似乎无法找到一个。 P.S我宁愿不使用插件,但如果没有任何好的解决方案,我可能不得不这样做。
答案 0 :(得分:0)
使用jQuery $.ajax()
可以实现使用statusCode:
处理程序,对于api将返回给客户端的每个状态代码,您可以使用statusCode
处理程序来处理它们。像这样的404
价:http://api.jquery.com/jquery.ajax/
JS CODE:
$.ajax({
statusCode: {
404: function() {
alert( "page not found" );
}
}
});
您还可以在ajax调用的error:
回调处理程序中处理状态代码,Check here @ JSFiddle
答案 1 :(得分:0)
这是一种简单的方法。
var errorMessages = {
'en':{
'409':'An Application has already been created.'
'404':'Not Found'
},
'fr':{
'409':'En ansökan med detta personnummer existerar redan.'
'404':'Frogs are not only the proof that french people will put anything into their mouths, but also they are amphibians'
}
};
var currentLanguage = 'fr';
var ErrorStatusHandler;
ErrorStatusHandler = (function() {
function ErrorStatusHandler() {}
ErrorStatusHandler.prototype.errorMessage = function(e) {
var responseText, translatedResponseText;
//responseText = e.slice(12, -2); - not sure if this is required
var response = JSON.parse(e); //assuming e is your response.
var errors = response.errors;
translatedResponseText = errorMessages[currentLanguage][errors[0].code];
return translatedResponseText;
};
return ErrorStatusHandler;
})();
说明:
对象errorMessages
包含每个code
的消息翻译。
然后,您将当前语言设置为currentLanguage
varible。
收到回复后,您将其解析为JSON.parse()
的JS对象
然后根据code
的值使用经过翻译的字符串。