Показать сообщение отдельно
  #1 (permalink)  
Старый 21.08.2014, 19:46
Аспирант
Отправить личное сообщение для kuchuluk Посмотреть профиль Найти все сообщения от kuchuluk
 
Регистрация: 04.04.2014
Сообщений: 33

ошибка Unexpected token ILLEGAL если есть перенос строки в тексте
Сделал загрузку фотографий на аяксе без перезагрузки страницы с использованием тега iframe. Вместе с фотографией загружается еще и текст. Сам скрипт, который производит загрузку фото на сервер и текста в базу данных отрабатывает нормально и вызывает функцию, в качестве параметра которой передает json-строку jsOnResponse("{'id':'" . $lastId . "', 'text':'" . $text . "', 'filename': '" . $fileName . "', 'success':'" . $success . "'}"); . В этом json-объекте содержится файл только загруженный и текст только что записанный в БД. Вот код этой функции:
function jsOnResponse($obj)  
 {  
	 echo ' 
	 <script type="text/javascript"> 
	 window.parent.onResponse("'.$obj.'"); 
	 </script> 
	 ';  
 }

То есть этот PHP скрипт вызывает js функцию, которая сразу после загрузки выводит тут же эту картинку только что загруженную и текст. Вот код этой функции:
function onResponse(d) {  
	eval('var obj = ' + d + ';');  
	alert('Файл ' + obj.filename + (obj.success ? " " : " НЕ ") +  "загружен.");
	var parentDiv = document.getElementById("vkPostsListing");
	parentDiv.className = 'oneVKPost';
	var all_tags = parentDiv.getElementsByTagName('div')[0];
	var container = document.createElement('div');
	container.innerHTML = "<p class='vktext'>" + obj.text + "</p><p class='vkimage' ><img src='/images/vkimages/" + obj.filename + "'></p>";
	
	
        parentDiv.insertBefore(container, all_tags);

 }

Всё работает нормально картинка и текст выводятся как надо, если только в тексте нет переноса строки. Если же в тексте содержится перенос строки, то файл и текст загружаются на сервер, но не выводятся, то есть js скрипт не дорабатывает. Консоль js показывает ошибку Uncaught SyntaxError: Unexpected token ILLEGAL. JS скрипт onResponse вообще получается не срабатывает, то есть всё затыкается именно на нем. Подскажите пожалуйста кто сталкивался с подобным, в чем может быть дело. Или остается только смириться с этим?
Ответить с цитированием