混合Javascript PHP的问题

时间:2011-03-22 13:02:54

标签: php javascript

我正在尝试在从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

“;

我试图用字符串替换删除换行符,但似乎不起作用。为什么这样的新行会导致此错误?

5 个答案:

答案 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替换变量。