如何将变量从php传递给jQuery

时间:2013-09-26 20:23:07

标签: php jquery

我有一个config.php文件,我在其中定义了几个变量。

我想在jQuery脚本中使用其中的一些变量。

我创建了一个header-js.php文件,其中包含以下内容:

<script type="text/javascript">
jQuery("#msgid1").html("Hello world.");
jQuery("#msgid1").html("Hello world again.");
global_cookie_prefix = <?php echo(global_cookie_prefix);?>;
</script>

当我运行上面的时候,msgid1 div再次显示“Hello world。”

当我将这些行换成:

<script type="text/javascript">
jQuery("#msgid1").html("Hello world.");
global_cookie_prefix = <?php echo(global_cookie_prefix);?>;
jQuery("#msgid1").html("Hello world again.");
</script>

msgid1 div显示“Hello world。”

似乎我定义global_cookie_prefix的行导致脚本中止。

我对如何解决这个问题感到茫然。

Thaks。

4 个答案:

答案 0 :(得分:5)

我敢打赌,问题在于您没有使用var关键字定义变量,和/或您的PHP代码段不在引号之间。试试这个

var global_cookie_prefix = '<?php echo global_cookie_prefix; ?>';
^^^                        ^                                   ^

答案 1 :(得分:1)

由于你想把变量作为字符串传递给JS,你需要告诉JS它的字符串:global_cookie_prefix = '<?php echo global_cookie_prefix;?>';(假设global_cookie_prefix是一个常量,在这种情况下它应该按惯例全部大写)

答案 2 :(得分:0)

你确定global_cookie_prefix是一个常量(因为它不是大写的)。尝试将变量符号'$'添加到global_cookie_prefix,以防它不是已定义的常量。

<?php echo($global_cookie_prefix);?>;

你的javascript中也需要引号...(尝试使用和不使用$取决于常量或不使用)btw by convention常量是大写的。

global_cookie_prefix = "<?php echo global_cookie_prefix; ?>";

答案 3 :(得分:0)

由于您的脚本实际上是一个输出Javascript的PHP脚本,因此您的脚本可能会因错误而终止,因为global_cookie_prefix是一个未定义的常量。如果global_cookie_prefix是一个变量,并且您已将其定义在包含此脚本的页面上的其他位置,则可能需要通过添加“$”符号将代码更新到下面。

您还需要在JS中使用'var'关键字,以避免在严格模式下出现错误。

<script type="text/javascript">
  jQuery("#msgid1").html("Hello world.");
  **var** global_cookie_prefix = '<?php echo(**$**global_cookie_prefix);?>';
  jQuery("#msgid1").html("Hello world again.");
</script>

我还建议您检查一下apache错误日志,看看错误是什么,并确认您的PHP输出没有在该行中断。

另外,如果你有error_reporting,那么PHP生成的关于global_cookie_prefix未定义的警告肯定会破坏你的javascript并使它在那时失败。

如果您粘贴了更多代码来提供此代码段上下文,那么帮助会更容易。

编辑:我在PHP输出周围添加了单引号,因为PHP输出的字符串会破坏你的JavaScript。