【问题标题】:my php code inside of jquery code doesn't get executed [duplicate]我在jquery代码中的php代码没有被执行[重复]
【发布时间】:2013-12-07 12:08:52
【问题描述】:
<script>
$('#tes').click(function(){    
<?php $output = ''; 
  foreach( $votes as $array) 
    if($array->color === $colors->color)       
   $output = $output . $array->votes . '<br>';?>  
     $('#Result').html(<?php $output ?>);
   });
</script>

我应该如何重写它以使其工作?

【问题讨论】:

  • 在一些 JavaScript 中使用 PHP...我认为混合 PHP 和 HTML 是最重要的...
  • 嗯...这是编码风格的减号。你不能,就是不能混合使用 JavaScript 和 PHP,尤其是这样。阅读有关干净代码、松散耦合以及 Web 如何在客户端和服务器端工作的信息。
  • PHP 在服务器上执行,Javascript 在客户端执行,除非通过 AJAX 调用,否则它们永远不会相遇。
  • 伙计们,这不是重复的。这家伙在$output 前面没有echo。虽然代码很丑陋,值得批评,但它与标记的其他 SO 帖子完全不同。
  • @jszobody 好的,诚然,可能是真正的问题。但在我看来,这种欺骗是恰当的。我们对这段代码应该做什么一无所知,所以不能确定。不管怎样,这都是一个懒惰的问题。

标签: php jquery


【解决方案1】:

抛开凌乱的代码问题,这个:

<?php $output ?>

应该是:

<?php echo $output ?>

另请注意,您的 JavaScript html() 函数需要一个字符串,这意味着 HTML 周围的引号。比如:

$('#Result').html("<?php $output ?>")

但是,如果您的 PHP $output 中有引号,那将会中断。那么你需要查看addslashes()

虽然这应该可以解决您当前的问题,但评论者认为这是一种非常混乱/丑陋的代码编写方式,您需要对其进行重大重构。

建议: 让这个更干净的一种方法是这样的:

// At the top of your page
<?php
$output = '';
foreach( $votes as $array) {
    if($array->color === $colors->color) {
        $output .= $array->votes . '<br>';
    }
}
?>

// Down in your HTML code somewhere
<div id="output" style="display:none"><?php echo $output ?></div>

// Now for the much simpler javascript
<script>
    $('#tes').click(function(){
        $("#output").show();
    });
</script>

这样您最少将 PHP 与 HTML/JS 混合,您不必担心转义引号,PHP $output 已经提前(隐藏)在您的页面上,而 JavaScript 只需显示它。

【讨论】:

  • 不鼓励这种类型的编程
  • @Fratyr 它仍在回答他的具体问题。我认为这是一件好事!
  • 感谢 cmets 我认为一个 php 衬里不需要整个 ajax 调用,除了 php 如何知道选择了哪种颜色?很少有菜鸟风格是简单的黑客攻击
  • @user3022152 这个答案解决了你的问题吗?
  • 关于实际代码如何使其更适合的任何建议
猜你喜欢
  • 1970-01-01
  • 2017-05-12
  • 2021-07-31
相关资源
最近更新 更多