当我通过javascript将php变量注册到html表单元素时,我收到错误。像If在我的代码中有php变量$edu_notes
,我将此变量的值赋给html表单元素
<textarea name="1_1_50" id="1_1_50" ></textarea>
和我的Javascript代码是:
document.getElementById('1_1_50').value = "<?php echo $edu_notes; ?>";
$edu_notes
的值来自linkedin个人资料:
"First Text Line
Second Text Line"
第一个文本行和第二个文本行之间有一个空行。 而javascript给出的错误是
unterminated string literal
"First Text line
由于空行,Javascript没有将字符串的全部值作为字符串。我尝试了一些像filter_var(),nl2br(),trim()
这样的PHP函数,但没有解决这个问题。我还尝试通过(string) $edu_notes
输入强制转换。
在我的源文件中我得到的内容请参见下面的截图:
我正在做这种类型的功能,因为所有表单元素都来自动态数据库。
答案 0 :(得分:2)
尝试
document.getElementById('1_1_50').value = '<?php echo str_replace(array( "\r", "\n", "%0a", "%0d"), "' + \"\\r\\n \" + '", $edu_notes); ?>'
将使用JS友好的返回来替换字符串中的任何换行符。
答案 1 :(得分:1)
这是因为它需要设置在同一条线上。在PHP中,用文字\n
替换换行符,它应该可以正常工作。如果它是单行文本框,请用空格替换换行符。
<?php echo str_replace("\n", " ", $edu_notes); ?>
或
<?php echo str_replace("\n", "\\n", $edu_notes); ?>
答案 2 :(得分:1)
document.getElementById('1_1_50').value =
'<?php echo str_replace("\n", "\\n", $edu_notes) ?>';
答案 3 :(得分:0)
尝试在javascript中使用多行字符串构造。
EG。
var myStr = "line one \
line two";
要在您的PHP代码中重新创建此代码,请使用“\”和新行替换新行: -
"First Text Line
Second Text Line"
到
"First Text Line \
Second Text Line"
这可以使用preg_replace在php中完成: -
$edu_notes = preg_replace( '#\n#', '\\\n', $edu_notes );
希望这有帮助。