在javascript函数中打印varchar php变量


Printing varchar php variable inside the javascript function

我试图在javascript函数中打印一个变量值。如果变量是一个整数($myInteger),它工作得很好,但当我想访问文本($myText)它给出了一个错误。

<?php $myText = 'some text';
    $myInteger = '220';
?>
<script type="text/javascript">
<?php print("var myInteger = " . $myInteger . " ;'n");?> //works fine
<?php print("var myText = " . $myText . " ;'n");?> //doens't work
</script>

谁能给我解释一下为什么会发生这种情况以及如何改变它?

问题是生成的Javascript代码将缺少字符串周围的引号。

可以在输出中手动添加引号,如下所示:

print("var myText = '". $myText. "';'n");

但是,请注意,如果字符串本身包含引号(或换行字符,或其他一些字符),则会中断,因此您需要转义它。

这可以使用addslashes()函数等来处理,但这可能仍然存在问题。

更好的方法是使用PHP内置的JSON功能,该功能是专门为生成Javascript变量而设计的,因此它将为您正确地完成所有转义。

你要找的函数是json_encode()。你可以这样使用它:

print("var myText = ". json_encode($myText). ";'n");

这将适用于任何变量类型——整数,字符串,甚至数组。

希望对你有帮助。

如果没有更多的代码,我们真的不知道你在做什么,或者你得到了什么错误(甚至从哪里),但如果我不得不猜测:

如果你将一串文本放入javascript变量中,你可能需要引用它。

<?php print("var myText = '" . $myText . "' ;'n");?>
                      ---^^^-------------^^^----
// Or even better:
<?php print("var myText = '$myText' ;'n");?>

附录根据下面的评论,如果你希望你的$myText包含引号,不要使用这个