2013-04-17 6 views
0

У меня есть текстовое поле на странице, содержимое которой вставляется в mysql db с помощью ajax/jquery $ .post. то данные mysql вызывается с php, а затем вставляется в новую динамическую текстовую область с javascript.jquery ajax to mysql to php to javascript conversion

Я конвертирую все html с htmlentities(), прежде чем вставлять его в db.

Затем я запустил mysql_query, чтобы вытащить данные. В этот момент, если я повторяю данные, они хорошо звучат.

Когда я затем вставляю его в функцию js для создания новой текстовой области и добавляю данные, я получаю сообщение об ошибке. если я попытаюсь предупредить данные, полученные с помощью mysql_query, я ничего не получаю.

Я просто использую некоторый текст Lorem Ipsum для тестирования. Я бежал поджигатель и ошибка, я получаю

[17:44:20.948] SyntaxError: unterminated string literal @ http://**************.com/********.php:427 

я не буду размещать весь код, если кто не нуждается в нем, поскольку есть много и честно говоря я думаю, что некоторые его рода проблемы типа кодирования побег/html.

есть последний JS функция, которая получает вышеуказанную ошибку согласно CTRL «U»

<script>NewTextArea('1','draggable','176','672','300','300','&lt;strong&gt;Lorem Ipsum&lt;/strong&gt; es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno est&Atilde;&iexcl;ndar de las industrias desde el a&Atilde;&plusmn;o 1500, cuando un impresor (N. del 
T. persona que se dedica a la imprenta) desconocido us&Atilde;&sup3; una galer&Atilde;&shy;a de textos y los mezcl&Atilde;&sup3; de tal manera que logr&Atilde;&sup3; hacer un libro de textos especimen. No s&Atilde;&sup3;lo sobrevivi&Atilde;&sup3; 500 a&Atilde;&plusmn;os, sino que tambien ingres&Atilde;&sup3; como texto de relleno en documentos electr&Atilde;&sup3;nicos, quedando esencialmente igual al original. Fue popularizado en los 60s con la creaci&Atilde;&sup3;n de las hojas &quot;Letraset&quot;, las cuales contenian pasajes de Lorem Ipsum, y m&Atilde;&iexcl;s recientemente con software de autoedici&Atilde;&sup3;n, como por ejemplo Aldus PageMaker, el cual incluye versiones de Lorem Ipsum.');</script> 
+1

Пожалуйста, разместите ** соответствующий ** код. – moonwave99

+2

_I конвертировать все html с htmlentities(), прежде чем вставлять его в db_ - это неправильный способ сделать это. Вы должны «htmlentities», когда вы используете HTML. Наличие HTML в вашей базе данных означает, что ваши данные _poluted_ с кодировкой HTML. Поскольку вы выводите на JavaScript, вы должны использовать 'json_encode' (не' htmlentities') – Halcyon

+0

@jeroen СинтаксисError находится в JavaScript, посмотрите на индикатор файла, это 'http'. – Halcyon

ответ

3

Когда вы инъекционного PHP переменные в JavaScript, это безопаснее, чтобы обернуть их в вызове json_encode(). Javascript имеет неявные окончания строк, что означает, что строки в строке должны быть экранированы. Если вы выполните эхо-строку php с новой строкой как часть вашего блока javascript, она сломает скрипт.

+0

спасибо. Я только заметил, что строки, где добавлено в db, я использовал str_replace для преобразования '\ n' в '
', и теперь он работает. еще один вопрос, почему json_encode добавляет цитаты в сохраненный текст? –

+0

@BarryWatts - json_encode по существу превратит что-либо в соответствующий соответствующий javascript-литерал. Это означает, что строки цитируются и исчезают. –