2010-09-02 2 views
38

По некоторым причинам, я получаю сообщение об ошибке:Ошибка: Uncaught SyntaxError: Неожиданный токен <

Uncaught SyntaxError: Unexpected token < 

Для этой строки кода:

title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>', 

В этом контексте:

$(document).ready(function() { 
    $('#infobutton').click(function() { 
     $('#music_descrip').dialog('open'); 
    }); 
     $('#music_descrip').dialog({ 
      title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>', 
      autoOpen: false, 
      height: 375, 
      width: 500, 
      modal: true, 
      resizable: false, 
      buttons: { 
       'Without Music': function() { 
        $(this).dialog('close'); 
        $.cookie('autoPlay', 'no', { expires: 365 * 10 }); 
       }, 
       'With Music': function() { 
        $(this).dialog('close'); 
        $.cookie('autoPlay', 'yes', { expires: 365 * 10 }); 
       } 
      } 
     }); 
    }); 

Я думаю, что все должно быть хорошо, но я не понимаю, почему < как-то отбрасывает это.

кричит, забыл показать, где это происходит! Мои плохие,

http://www.marioplanet.com/index.asp

Любые идеи?

+3

Я тоже не нахожу 'Т понять. Может быть, вы хотели бы поделиться некоторым кодом и объяснить, что вы пытаетесь сделать и т. Д.?? Показ ошибки - это одно, но если вы хотите понять, откуда эта ошибка, нам нужно увидеть, что вызывает ее (что, несомненно, является вашим кодом). Также тегирование вашего вопроса тегом 'error' не приносит ему много полезной информации. –

+2

Это не строка кода. Я имею в виду, вы не можете его выполнить. По крайней мере, дайте нам достаточно контекста, чтобы увидеть полное заявление. – recursive

+0

K, мой плохой, я попытался дать ему немного больше контекста, и я забыл дать ссылку, которую я изначально собирался делать. – Qcom

ответ

37

Это проблема с браузером, а не проблема с javascript или JQuery; он пытается интерпретировать угловую скобку как HTML-тег.

Попробуйте сделать это при настройке JavaScripts:

<script> 
//<![CDATA[ 

    // insert teh codez 

//]]> 
</script> 

В качестве альтернативы, переместите JavaScript в отдельный файл.

Редактировать: Ahh .. с этой ссылкой Я отследил его. То, что я сказал, было проблемой не совсем. это является вопрос, раздели с сайта:

<script type="text/javascript" 
    $(document).ready(function() { 
    $('#infobutton').click(function() { 
     $('#music_descrip').dialog('open'); 
    }); 
     $('#music_descrip').dialog({ 
      title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>', 
      autoOpen: false, 
      height: 375, 
      width: 500, 
      modal: true, 
      resizable: false, 
      buttons: { 
       'Without Music': function() { 
        $(this).dialog('close'); 
        $.cookie('autoPlay', 'no', { expires: 365 * 10 }); 
       }, 
       'With Music': function() { 
        $(this).dialog('close'); 
        $.cookie('autoPlay', 'yes', { expires: 365 * 10 }); 
       } 
      } 
     }); 
    }); 

Можете ли вы ошибку? Он находится в первой строке: тег <script не закрыт. Он должен быть <script type="text/javascript">

Моего предыдущее предложение все еще стоит, однако, вы должны заключать внутри маркированные скрипты в CDATA блоке, или переместить их в отдельно связанный файл.

Это не было проблемой здесь, но это показало бы реальную проблему быстрее.

+0

Oh wowwwwwww ... Спасибо за место, но это было довольно хромым, во всяком случае, я переместил js в отдельный файл для более чистого кода и обслуживания в любом случае. Благодаря! – Qcom

+0

Можете ли вы поймать такие исключения в jquery? Смысл, если мой метод успеха получает эти нечеткие исключения, я хотел бы поймать его и показать сообщение об ошибке пользователю. – noobcode

+0

@noobcode Если вы неправильно структурируете свою разметку, механизм javascript будет терпеть неудачу - или вообще не начнется. То, как обрабатываются ошибки в разметке, зависит от браузера, и я не уверен, что какой-либо механизм, который вы можете подключить, дает пользователю общее сообщение об ошибке «Я испортил ваш сайт, который вы пытаетесь просмотреть». – Randolpho

-3

Я не знаю, получили ли вы ответ. Сегодня я встретил эту проблему, и я подумал, что у меня есть правильный ответ: вы не помещаете файл сценария в нужное место.

Большинство людей не сталкиваются с этой проблемой, потому что они напрямую вставляют скрипты в свой серверный каталог. Я встречаю это, потому что я делаю ссылку исходного файла (html-файл) на корневой каталог сервера. Я не связывал файлы сценариев, и я не знаю, как их находят nginx. Но они загружены неправильно.

После того как я связал все файлы с корневым каталогом сервера, проблема решена.

-1

Обычно он работает, когда вы меняете имя каталога, в котором находится файл. Это работало для меня, когда я переместил его с «js /» на «../js»

8

У меня был тот же самый симптом, и это была моя проблема, очень сложно отслеживать, поэтому я надеюсь, что это поможет кому-то ,

Я использовал JQuery parseJSON(), и контент, который я пытался проанализировать, на самом деле не был JSON, а возвращалась страница с ошибкой.

9

Я тоже получил эту ошибку при разработке приложения Backbone с использованием состояния push5 HTML5 в сочетании с .htaccess, который перенаправляет любые неизвестные файлы в index.html.

Оказывается, что при посещении URL, такие как /something/5, мой /index.html эффективно обслуживаются в /something/index.html (благодаря моей .htaccess). Это привело к потере всех относительных URL-адресов моим файлам JavaScript (изнутри index.html), что означало, что у них должно было быть 404'd.

Однако, опять же из-за моего htaccess, вместо 404'ing при попытке получить JS-файлы они вместо этого вернули мой index.html. Таким образом, браузеру был предоставлен индекс.html для каждого файла JavaScript, к которому он пытался подключиться, и когда он оценивал HTML, как если бы он был JavaScript, он возвращал ошибку JS из-за ведущего < (из моего тега в index.html) ,

Исправление в моем случае (поскольку я служил сайту из подкаталога) было добавить базовый тег в моей голове html.

<base href="/my-app/">

+1

Это исправляло мою проблему - в моем случае я использовал - никогда не думал, что это проблема htaccess! –

+0

Я столкнулся с подобной проблемой при использовании реактивного маршрутизатора с такими путями, как «user /: userid». Исправлено добавление базового тега перед URL-адресами моих ресурсов. Спасибо @ jeff-h! – Tim

+0

Это правда, но следствие более общей проблемы, описанной в [david.barkhuizen] ответе] (https://stackoverflow.com/a/39034617/3645375) –

4

Обычно это происходит, когда вы пытаетесь загрузить не-HTML ресурс (например, файл сценария библиотеки JQuery как тип текста/JavaScript) и сервер, вместо того, чтобы вернуться ожидаемый JS ресурс, возвращает HTML вместо этого - обычно 404 страницы.

Браузер затем пытается проанализировать ресурс как JS, но поскольку на самом деле было возвращено HTML-страница, синтаксическая ошибка не выполняется, и поскольку HTML-страница обычно начинается с символа <, это который выделен в исключении синтаксической ошибки.

+0

Есть ли шанс отключить это поведение? Не поймите, почему jquery messes с тегами ресурсов –

-1

Если вы столкнулись с этой проблемой только в Chrome и в IE, например, все в порядке, то просто включите checkbutton «Отключить кеш» в разделе «Инструменты разработчика» (F12 -> «Сеть») и очистите историю в последний час.

У меня была эта проблема и выше решение работало для меня.

+1

Пожалуйста, не публикуйте идентичные ответы на несколько вопросов. Отправьте один хороший ответ, затем проголосовате/отметьте, чтобы закрыть другие вопросы как дубликаты. Если вопрос не является дубликатом, * приложите свои ответы на вопрос. * –

-1

попытка заменить текст/JavaScript для текста/html затем сохранить записку и перезарядка браузер затем вернуть его обратно в текст/JavaScript .. Я не знаю, но по неизвестным причинам это один работает со мной .. Я ищу и скопирую-вставку, и я просто случайно отменил то, что я печатаю, тогда бум kablooey это сработало. О. кстати я просто нуб .. извините, я просто подумал, что это может помочь, хотя ..

Смежные вопросы