【问题标题】:How can you put PHP inside a Javascript?如何将 PHP 放入 Javascript 中?
【发布时间】:2016-05-15 01:43:18
【问题描述】:

我正在通过这样的 PHP 函数检索 Facebook Page Like 计数:

<?php
function fbLikeCount($id,$appid,$appsecret){
$json_url ='https://graph.facebook.com/'.$id.'?access_token='.$appid.'|'.$appsecret.'&fields=likes';
$json = file_get_contents($json_url);
$json_output = json_decode($json);
if($json_output->likes){
    return $likes = $json_output->likes;
}else{
    return 0;
}
}
?>

然后,我可以像这样回应这个没有问题:

<?php
echo number_format(fbLikeCount('companynamegoeshere','XXXXXXXXXXXX','XXXXXXXXXXX'));
?>

但是,我正在使用 JavaScript 函数来为页面上显示数字的位置制作动画,如下所示:

<script>
$({someValue: 0}).animate({someValue: 450700}, {
duration: 3000,
easing: 'swing',
step: function () {
   $('#facebookCount').text(commaSeparateNumber(Math.round(this.someValue)));
},
complete:function(){
      $('#facebookCount').text(commaSeparateNumber(Math.round(this.someValue)));
  }
});
</script>

450700 在 JS 代码中的位置是我需要放置 PHP 回显数字的位置。甚至可以将 PHP 回显(如果我先将其设为变量?)放入 JS。

我尝试了很多很多东西,结果碰壁了。非常感谢任何帮助。

谢谢!

【问题讨论】:

  • 是的,可以回显一个 php 值并在 javascript 中使用它,您尝试过什么?
  • 我已经尝试了几个小时的不同解决方案(包括此页面上的所有解决方案),但是得到一个 0 或 NaN,而不是使用 PHP 定期打印出来的数字
  • 您已将 gavgrif 的答案标记为正确,它对您有用吗?
  • 是的,他对 parseInt 的建议,以及隐藏的 div 和使用 text() 进入内部都有效。谢谢!

标签: javascript php jquery echo


【解决方案1】:

如果 javascript 在 php 文件中,您可以将 PHP 标记放在 javascript 中。但老实说,您最好创建一个隐藏的元素,在其中回显您需要的数据,然后只使用 javascript 来获取该元素的 value/innerHTML。

【讨论】:

  • 哇,这很有趣,我已经尝试了很多,并阅读了我能找到的每一篇文章,但没有任何效果......不过,当你说“隐藏元素”时,这种方法听起来不错你的意思是不显示 div,你能帮忙提供任何代码吗?我会继续努力的,谢谢!
  • 是的,没错。你说对了!只需给它一个 id 以便您可以使用document.getElemenyById('myHiddenElement'),或者因为您似乎在使用 jQuery $('#myHiddenElement')。一切都只是 javascript :)
  • 我尝试了这个隐藏的 div:&lt;div style="display:none;"&gt; &lt;div id="test"&gt;&lt;?php echo number_format(fbLikeCount('ccc','xxx','xxx')); ?&gt;&lt;/div&gt; &lt;/div&gt; 并进行了此修改,但只是得到 0 而不是我在 php 回显时得到的实数:&lt;script&gt; var myInnerHtml = $("#test").innerHTML; $({someValue: 0}).animate({someValue: myInnerHtml}, {
  • 您可能需要使用 $("#test").text() 来代替 jQuery。哦,你也应该像这样包装你的javascript $( document ).ready(function() {console.log( "ready!" );});
  • 感谢您的帮助!!我终于明白了,不得不使用 parseInt 并去掉 number_format 部分......再次感谢!
【解决方案2】:

要修改@Pedro Lobito 的答案 - 您在 js 中回显该值,如下所示:

<?php
$number = "1234";
?>
<script>
$({someValue: 0}).animate({someValue: <?php echo"$number";?>}, {
duration: 3000,
...

或者:

    <?php
    $number = "1234";
    ?>


    <script>
    var testValue = <?php echo"$number";?>;
    $({someValue: 0}).animate({someValue: testValue}, {
    duration: 3000,
    ...

甚至

<input type="hidden" name="testInput" value="<?php echo"$number";?>" />

        <script>
        var testValue = $('[name=testInput]').val();
        $({someValue: 0}).animate({someValue: testValue}, {
        duration: 3000,
        ...

或隐藏的 div / span - 但将 display:none 移动到外部 CSS 表

<span style="display:none"  id="testSpan"><?php echo"$number";?></span>

        <script>
        var testValue = $('#testSpan').text();
        $({someValue: 0}).animate({someValue: testValue}, {
        duration: 3000,
        ...

【讨论】:

  • 我认为这会起作用,但事实并非如此,我用这个 &lt;div style="display:none;" id="test"&gt;&lt;?php echo number_format(fbLikeCount('xxx','xxx','xxx')); ?&gt;&lt;/div&gt; &lt;script&gt; var myInnerHtml = $("#test").text; $({someValue: 0}).animate({someValue: myInnerHtml}, { 得到 NaN
  • 好的 - 两件事 - 你需要 () 在 .text 之后,你需要将文本解析为数字 - 试试这个: var myInnerHtml = parseInt($("#test").text() );
  • 我试过了,但仍然得到 NaN。我认为是这样 - 在这里,我摆脱了 display none 所以看到它在屏幕上直接打印出来,而不是先转换为数字:&lt;div id="test"&gt;&lt;?php echo "number_format(fbLikeCount('ccc','xxx','xxx'))"; ?&gt;&lt;/div&gt; 那么,我怎样才能使内部文本成为打印出来的数字用php?我也尝试将 parseInt 放在那里,但没有运气......
  • 不知道 - 抱歉 - 我猜“fbLikeCount('ccc','xxx','xxx')”没有给你一个实际的数字 - 你有没有把它拿出来看看它是什么给你?
  • 我明白了!我终于在(现在)隐藏的 div 中得到了回声作为数字,我的引号可能已经关闭,然后需要 parseInt,但我发现 number_format 导致它只返回前 3 个数字,所以我拿了出来了,这正在工作:&lt;div id="test" style="display:none;"&gt;&lt;?php echo fbLikeCount('ccc','xxx','xxx'); ?&gt;&lt;/div&gt; &lt;script&gt; var fbCount = parseInt($("#test").text()); $({someValue: 0}).animate({someValue: fbCount}, {
【解决方案3】:

如果 JavaScript 代码在 php 页面上,您可以在 JavaScript 中添加 php 代码,但我更喜欢使用 heredoc syntax,即:

somefile.php

<?php
$number = "1234";
echo <<< LOB
<script>
$({someValue: 0}).animate({someValue: {$number}, {
duration: 3000,
easing: 'swing',
step: function () {
   $('#facebookCount').text(commaSeparateNumber(Math.round(this.someValue)));
},
complete:function(){
      $('#facebookCount').text(commaSeparateNumber(Math.round(this.someValue)));
  }
});
</script>
LOB;
?>

【讨论】:

  • 谢谢,但这给了我一个“unexpected =" PHP 错误,这也不起作用:&lt;?php $number = "echo number_format(fbLikeCount('abc','xxxxxxxxxxxx','xxxxxxxxxx'));"; ?&gt; &lt;script&gt; $({someValue: 0}).animate({someValue: &lt;?php $number; ?&gt;}, {
  • 仍然无法正常工作。请注意,如果我替换 $number = "echo number_format(fbLikeCount('ccc','xxx','xxx'));" with just $number = "555";` 那么它工作正常。就像 PHP 在将其放入 JS 函数之前没有先将 number_format(fbLikeCount 代码转换为数字,如果这有任何意义的话。在我的测试中,我要么得到 0,要么得到 NaN(我相信不是数字)跨度>
猜你喜欢
  • 2011-03-21
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
  • 2012-06-06
  • 2017-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多