не беспокойтесь! похоже, больше текста, чем есть ;-) так что, пожалуйста, продолжайте читать!
Основные вопросы:
- Что означает ошибка: неверный ярлык означает?
- Где ошибка в моем скрипте?
теперь начинается чудовище; -):
У меня есть скрипт, который загружает элементы языкового массива (элементы, определенные с помощью lang_keys в js - см. Выше) с сервера (сервер доставляет JSON-версию этого массива) для текущего языка.
с функцией JS translate("<synonym>");
вы получите необходимый текст на текущем языке. ОБНОВЛЕНИЕ: jquery 1.5 не минимизирован (старый: jquery.js (v1.4.1 - минимизирован)) загружен и lang.js тоже.
поэтому я получаю ошибку, которую просто не могу найти
Я должен добавить: функция translate()
работает без ошибок и JS не прерывается. Все функции работают по желанию.
У меня нет других ошибок, и все JS работает нормально ... но я не хочу удивляться будущему - поэтому мне нужно избавиться от этой ошибки.
консольный вывод в chrome (который указан после запроса ajax [/ query / js_lang / json]):
Uncaught SyntaxError: Unexpected token : jQuery.jQuery.extend.globalEvaljquery.js:602
jQuery.ajaxSetup.converters.text scriptjquery.js:6992
ajaxConvert jquery.js:6884
done jquery.js:6454
jQuery.ajaxTransport.send.callback jquery.js:7252
jQuery.ajaxTransport.send jquery.js:7261
jQuery.extend.ajax jquery.js:6646
(anonymous function) lang.js:116
консольный вывод в Firefox (который указан после запроса ajax [/ query / js_lang / json]):
invalid label
{"js_accept_terms":"Du musst unseren A...:"Kontaktname","js_agent_email":"Konta
Может кто-нибудь сказать мне точно, что означает ошибка: invalid label
?
Мой скрипт (lang.js) выглядит так:
var month_names = new Array();
var day_names = new Array();
var lang_keys = new Array(
"js_accept_terms",
...
"nope"
);
var translations = new Array();
function translate(key, replace){
var translated = translations[key];
if(replace != undefined){
for(var i=0; i<replace.length; i++){
translated = translated.replace(/\%1/, replace);
}
}
return translated;
}
$.ajax({ //this is line 116
url: "/query/js_lang/json",
type: "post",
data: {keys: JSON.stringify(lang_keys)},
timeout: 7000,
success: function(data){
var trans = jQuery.parseJSON(data);
for(var key in trans){
translations[key.replace(/^js\_/, "")] = trans[key];
}
month_names = new Array(translate("jan"), translate("feb"), translate("mar"), translate("apr"), translate("may"), translate("jun"), translate("jul"), translate("aug"), translate("sep"), translate("oct"), translate("nov"), translate("dec"));
day_names = new Array(translate("sun"), translate("mon"), translate("tue"), translate("wed"), translate("thu"), translate("fri"), translate("sat"));
},
error: function(){
out_message("Error. No Language loaded!", "Error");
},
async: false
});
out_message()
отображает стиль CSS. Я использую эту функцию в других частях сайта, где она работает без проблем.
Я удалил элементы в lang_keys
, где возвращаемое значение имеет специальные символы, такие как ':', umlauts, косая черта и т. Д. ... скажем: я протестировал его только с буквенно-цифровыми значениями и получил ту же ошибку. 1054 *
извините за мой английский ;-) и спасибо за вашу помощь