尝试在JavaScript中发出警报时,Textarea内容会产生错误
问题描述:
I created a HTML form that submits to a PHP script. The script should just write content of a dynamically created input
element as an argument to alert
JavaScript function. The input is from WYSIWYG editor (CKEditor).
When I input multiple lines of text in the editor and I press the submit button of the form, Firebug shows that the woa.php
(form’s target) produces an error:
SyntaxError: unterminated string literal
alert("<p>Hi watsup<p>
How can I solve this?
Page with form:
<html>
<head>
<script src="./ckeditor/ckeditor.js"></script>
</head>
<body>
<form method="post" action="woa.php" id="myForm">
<textarea name='editor1'></textarea>
<script>
window.onload = function() {
var textContent = CKEDITOR.replace('editor1');
var button = document.getElementById("button");
button.onclick = function(event) {
event.preventDefault();
var userInput = document.createElement("input");
userInput.type = "hidden";
userInput.name = "userInput";
userInput.value = textContent.getData();
var myForm = document.getElementById("myForm");
myForm.appendChild(userInput);
}
}
</script>
<button id="button">finish edit</button>
<button>save</button>
</form>
</body>
</html>
Target of the form (woa.php
):
<html>
<head>
<script>
alert("<?php echo $_POST['userInput']; ?>");
</script>
</head>
<body>
</body>
</html>
答
JavaScript does not like line breaks inside strings. You have to change newlines to escape sequences. Use
alert("<?php echo strtr($_POST["userInput"], array("" => '', "
" => '
')); ?>");