我正在尝试在从PHP分配的javascript中分配值,并使用document.write()来输出它们。问题是,当我这样做时,会显示一个完整的空白屏幕,但不会抛出任何错误。但是,如果我把PHP拿出并放入一个像'ABC'这样的值就行了。我的代码示例可以是:
var comment_text="<?php echo $value['comment_text'];?>";
var bodyelement = document.getElementsByTagName('body')[0];
var newdiv = document.createElement('div');
newdiv.style.textAlign = 'center';
newdiv.style.zIndex = 10001;
newdiv.style.left = (<?php echo $comment_x;?>+getPos('browserwindow',"Left")-23) + 'px';
newdiv.style.top = (<?php echo $comment_y;?>+getPos('browserwindow',"Top")-90) + 'px';
newdiv.style.position = 'absolute';
newdiv.innerHTML = comment_text;
bodyelement.appendChild(newdiv);
我确实有一个PHP错误日志,也没有错误。从数据库中检索值,probem随附输出值。 的 * 更新的 * 好的,我以前遇到过这个问题。
基本上是这样创建换行符:
var comment_text="cool Beans
“;
我试图用字符串替换删除换行符,但似乎不起作用。为什么这样的新行会导致此错误?
答案 0 :(得分:3)
您的问题在PHP的输出中很明确。如果你得到一个空白页面,意味着你很可能有一个PHP问题 HALTING 处理所述页面。
在将任何内容发送给查看器之前解析PHP,这将导致空白/错误页面。
当您将$value['comment_text']
替换为ABC
时,会删除导致错误的位置。
我将假设$value['comment_text']
是函数或数据库查询的结果,首先尝试输出$value['comment_text']
,然后担心将其粘贴在JS中(如果{你的PHP代码有效。)
由于我没有看到您的任何PHP代码,我无法帮助您。
答案 1 :(得分:1)
使用
var comment_text=String(<?php echo json_encode($value['comment_text']);?>);
而不是
var comment_text="<?php echo $value['comment_text'];?>";
这可以通过转义所有特殊字符(如反斜杠,引号或换行符)来保护您免受跨站点脚本攻击。
String(...)
确保comment_text
具有String
类型,并且不会被解释为数字(如果$value['comment_text']
具有数字类型)。
答案 2 :(得分:0)
如果PHP导致错误(听起来像是这样),您可以打开错误报告以查看问题
error_reporting(E_ALL)
答案 3 :(得分:0)
解决方案只是使用修剪。
echo trim($ value ['comment_text']);
答案 4 :(得分:0)
我建议您在js中使用带有%s的javascript代码的heredoc。并使用sprintf替换变量。