@Nohaga

Почему ошибка «Unexpected token =»?

jQuery(document).ready(function(){
  var start = -1;
  jQuery.ajax({
    url: '/wp-content/plugins/prices/prices.txt',
    dataType: 'text',
    success: function (data) {
      var end = 0;
      while (end != -1) {
        end = data.indexOf("|", start+1);
        var name = data.substring(start+1,end);
        var endvalue = data.indexOf("|", end+1);
        var value = data.substring(end+1,endvalue);
        start = endvalue;
       	  if (value && name) {
            eval(name + " = " + value);
            console.log(name + ' ' + value);
          }
        }
    }
  });
});

Небольшой скриптик, открывает файл, берёт строку как имя переменной и присваивает ей значение из файла. И всё работает, но в конце выдаёт ошибку
Uncaught SyntaxError: Unexpected token =
в строке if (value && name) {eval(name + " = " + value);console.log(name + ' ' + value);}
причём в конце файла условие не срабатывает и дело даже не доходит до этого места
содержимое файла
minland|6789|maxland|6789|minvisitka|78696789|maxvisitka||
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
mannaro
@mannaro Куратор тега JavaScript
Умею профессионально гуглить
Это вообще сомнительное решение. Никогда, запомните, никогда(!) нельзя использовать eval, если вы не контролируете то, что туда придёт. Это открывает огромную дыру в безопасности. Да и сам способ выглядит как дикий костыль.

Советую хранить все переменные не просто так, а как ключи какого-то объекта. Тогда обновление их не потребует вызова eval.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
IceRD
@IceRD
лучше while + substring заменить на split
попробуйте не резать ... |maxvisitka|| не существующие строки и не пытаться запихивать их в eval
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы