Статьи

jQuery неопределенная строковая литеральная ошибка

Вы когда-нибудь сталкивались с этим досадным сообщением об ошибке: «неопределенный строковый литерал».

undetermined-string-literal

Хорошо, у меня есть 3 случая, когда вы могли столкнуться с этой ошибкой и как исправить ее для каждого конкретного случая.

  1. Многострочные строки
  2. Неверный формат строки (плохие символы)
  3. Угловые скобки

Многострочные строки

Если вы пытаетесь присвоить переменную строку, которая охватывает несколько строк, вы можете увидеть ошибку «Undefineded String Literal». Чтобы решить эту проблему, вы должны использовать обратную косую черту JavaScript («») после каждой строки, чтобы сообщить интерпретатору, где заканчивается строка, и соединить строку вместе.

Другой способ — просто разбить вашу строку на части и сложить их вместе.

Неверный формат строки (плохие символы)

Если вы пытаетесь присвоить HTML переменной, вы можете увидеть ошибку «Undefineded String Literal». Возможно, вы загрузили HTML откуда-то еще через ajax и теперь пытаетесь его использовать / проверять. Используйте следующий код, чтобы очистить плохие символы в строке, прежде чем пытаться назначить ее.

Угловые скобки

Если вы пытаетесь использовать угловые скобки («>» и «<») в строке, вы можете увидеть ошибку «Undetermined String Literal» при попытке передать строковые данные через ajax. [Js] var contentQuery = ‘ первые 10 локаций типа «abc» ‘;
// примечание: abc заменяет фактический запрос
[/ JS]

Оказывается, именно угловые скобки securequery создавали ошибку, и мне пришлось ее взломать (как таковую), добавив угловые скобки («<» & «>«) непосредственно перед кодированием и отправкой запроса через AJAX (см. Ниже) ,

 $.ajax({ type: 'POST', url: '/ajax/abc', data: 'content=' + encodeURIComponent('< '+contentQuery+'>'), dataType: 'html', success: function(data){ console.log(data); //display results $('#results').html(data); } }); 

Это может быть даже ошибка в jQuery, хотя и не уверен. Когда вы тестируете в firebug это работает, хотя! Так что, возможно, нет …

 var fine = ' first 10 location like "abc" '; console.log(fine);  var fine = ' first 10 location like "abc" '; console.log(fine);  var fine = ' first 10 location like "abc" '; console.log(fine);