неопределенный строковый литерал - PullRequest
2 голосов
/ 29 июля 2011

У меня есть php-скрипт, который загружает mp3-файлы на мой сервер. Я использую для этого «uploadify». Существует событие «onSelect» ( документация ), которое вызывается при загрузке файла. Используя его, я хочу динамически обновлять плейлист после загрузки каждого файла.

Но моя функция из поля 'onselect' выдает ошибку 'неопределенный строковый литерал'. После долгого поиска я делаю свою однострочную функцию вместо многострочной (для удобства добавлены разрывы) и добавляю косую черту перед двойными кавычками.

function() {$('#response').append("
<script type=\"text/javascript\">
    var flashvars = {url:'./media/audio/users/126/md6xs4cv8ks0.mp3',artist:'Undef', track:'Undef', duration:''};
    var Params = {};
    var attributes = {};
    swfobject.embedSWF(\"min.swf\", \"myAlternativeContent1\", \"320\", \"40\", \"9.0.0\", false, flashvars, params, attributes);
</script>
<div id="myAlternativeContent1">
    <a href="http://www.adobe.com/go/getflashplayer">
    <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
    </a>
</div>

Ответы [ 3 ]

5 голосов
/ 29 июля 2011

В отличие от других ответов, строковые литералы могут содержать разрывы строк, их просто необходимо экранировать с помощью обратной косой черты, например:

var string = "hello\
world!";

Однако это не создаетразрыв строки в строке, так как она должна быть явной \n escape-последовательностью.Технически это станет helloworld.Выполнение

var string = "hello"
+ "world"

будет намного чище

2 голосов
/ 29 июля 2011

Подсветка синтаксиса прямо в вашем посте проясняет: у вас есть неэкранированные кавычки в вашем блоке <div> (и вы забыли конец вашего скрипта).

В любом случае строковые литералы в Javascript не могут занимать несколько строк.

Вместо:

alert("lol
       wtf");

запись:

alert("lol" +
      "wtf");

Вы можете также рассмотреть возможность разбиения подстроки </script>, , которая, как известно, вызывает проблемы с синтаксическим анализом :

"</scr" + "ipt>"

(Строго говоря, во втором примере, приведенном выше, будет \n и несколько пробелов после lol, но это не должно иметь значения в вашем случае написания HTML-разметки.)

0 голосов
/ 29 июля 2011

Может быть наличие </script>.Попробуйте экранировать один или несколько из этих символов (т.е. используйте <\/script> вместо)

...