Bryan
Bryan

Reputation: 21

Storing HTML in a Javascript Variable

I am currently coding a website that will allow a user to input data into a MySQL database using a WYSIWYG editor. The data stores into the database without a problem and I can query it using PHP and display it on my webpage.

Up to this point everything is working ok until I try to move the HTML stored in the MySQL database into a javascript variable. I was able to get it working using CDATA[], but not for every browser. It works in Firefox, but not IE or Chrome. I am looking for a solution that will be able to work in all of the browsers. Any help would be greatly appreciated.

Upvotes: 2

Views: 1518

Answers (2)

Pantelis
Pantelis

Reputation: 6136

"Safefy" your code, like this

str_replace( array("\r", "\r\n", "\n", "\t"), '', str_replace('"','\"',$str));

The above function clears linebreaks, and tabs so that your code appears in one line. If it breaks into more than one line, then it cannot be parsed as a string in JS and an error is thrown. Also we are escaping " to \", maybe there are more string replacements that need to take place, it depends in your content.

and inline it in javascript,

//<![CDATA[ 
    var myHtml = <?php echo '"'.$stuff.'"'; ?>;
//]]>

keep in mind the '"' part so that it appears like this var myHtml = "test";

Upvotes: 0

JW.
JW.

Reputation: 51638

Since you're using PHP:

<script>
    var foo = <?php echo json_encode($htmlFromDatabase); ?>
</script>

The json_encode method, while normally used for encoding JSON objects, is also useful for converting other PHP variables (like strings) to their JavaScript equivalents.

Upvotes: 2

Related Questions