在javascript函数里面打印varchar php变量

时间:2011-07-07 12:56:36

标签: php javascript string varchar

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

任何人都可以向我解释为什么会发生这种情况以及如何改变它?

2 个答案:

答案 0 :(得分:3)

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

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

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

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

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

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

您正在寻找的功能是json_encode()。您可以按如下方式使用它:

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

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

希望有所帮助。

答案 1 :(得分:1)

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

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

<?php print("var myText = '" . $myText . "' ;\n");?>
                      ---^^^-------------^^^----

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

ADDENDUM 根据以下评论,如果您希望$myText包含引号,请不要使用此标记。