2011-03-22 96 views
2

我想分配从PHP分配的值和使用document.write()输出它们。问题是,当我这样做时,会出现一个完整的空白屏幕,但不会引发错误。但是如果我把PHP拿出来并放入诸如'ABC'这样的值,它就可以工作。我的代码的例子可以是这样的:混合Javascript的问题PHP的

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错误日志,并没有错误抛出beign。这些值从数据库中检索出来,probem就会输出它们。 *UPDATE* 好吧,我以前出现过此问题。

基本上是一个换行符创建这样的:

var comment_text="cool Beans 

“;

我试图删除与字符串替换换行符但似乎并没有工作,为什么一个新的生产线是这样的。造成这个错误?

+1

您是否查看源代码? PHP输出是否正确? – 2011-03-22 13:04:38

+0

检查您的Apache日志是否有错误。如果您获得了空白屏幕,那么PHP错误可能会显示在日志中。 – 2011-03-22 13:05:18

+1

什么是输出 - >它是$ commnent_x,$ comment_y和$ value ['comment_text']显示? – bensiu 2011-03-22 13:06:20

回答

1

使用

var comment_text=String(<?php echo json_encode($value['comment_text']);?>); 

,而不是这将转义所有特殊字符,如反斜杠,报价或换行符保护你不受跨站点脚本攻击。

String(...)确保comment_text的类型为String且不被解释为数字(如果$value['comment_text']具有数字类型)。

3

你的问题是从PHP输出克利里。如果你得到一个空白页面,意味着你最有可能被暂停页面的处理的PHP问题。

由于在将任何内容发送给查看器之前解析了PHP,这会导致出现空白/错误页面。

当你代替您$value['comment_text']ABC您删除导致错误的位置。

我会认为$value['comment_text']要么是功能,还是数据库查询的结果,尽量只输出$value['comment_text'],然后再担心JS坚持它(如果你的PHP代码的工作,将工作)。

由于我没有看到你的任何PHP代码,我不能帮你进一步。

+0

从数据库中检索值是。值被检索,因为我已经完成了print_r($ value)和所有的输出。所以信息就在那里。 – 2011-03-22 13:20:13

+0

是'array()'形式还是'object'的数据库结果? – Jakub 2011-03-22 13:21:16

+0

@Devin Dixon,你应该在comment_text中使用引号:'<?php echo addslashes($ value ['comment_text']); ?>'。 – Czechnology 2011-03-22 13:23:06

0

如果PHP导致错误(听起来就像是),你可以把你的错误报告,以了解该解决方案只是用装饰问题

error_reporting(E_ALL) 
0

回声修剪($值[ 'COMMENT_TEXT']);

+1

这是一个解决方案吗?究竟是什么打破了它?评论中的空间?或者你的换行方法? – Jakub 2011-03-22 13:26:21

+0

它是一种解决方案,显然有效,但不是其他人。 json_encode工作时间为%100 – 2011-03-23 14:16:24

0

我建议您在js中为%s使用heredoc。并使用sprintf来替换变量。的

var comment_text="<?php echo $value['comment_text'];?>";