实现PHP逻辑到jQuery

时间:2013-11-26 11:22:22

标签: javascript php jquery

在我有3个用户的系统中, Ben,Shane Payne ,该网站通常适用于所有用户,并且具有相同的菜单系统。但是我的任务是从核心添加一个菜单项,仅对Ben可见。

所以,我在菜单项中添加了 Candy ,因为Ben很小,但现在我 无法 更改 PHP中的核心

if('Ben' === $user->name) {
  // Show the Candy Menu
}

但是我希望Candy菜单只显示Ben并将其隐藏起来。

如何使用 jQuery

执行此操作

我不打算像以下那样弄乱PHP代码:

<?php if('Ben' === $user->name):?>
  <script ></script>
<?php endif; ?>

我希望用jQuery实现PHP的一些逻辑,因此,我不会乱用PHP代码,而是在jQuery中实现逻辑。类似的东西:

//I am mixing PHP and jQuery here, I know it doesn't work but this is what I am looking for.
if('user' === 'Ben') {
  $('#CandyMenu').show();
}

我该怎么做?

2 个答案:

答案 0 :(得分:4)

您可以将值存储在JavaScript变量中:

var user = '<?php echo $user->name; ?>';

$('#CandyMenu').toggle(user === 'Ben');

但是,这应该在服务器端完成,当一个元素被隐藏时,它仍然在页面上。使用jQuery(JavaScript)并不是正确的方法,特别是如果你回应敏感数据。

答案 1 :(得分:1)

您必须进行某种PHP更改,否则您的JS无法知道当前用户是谁。

如果你的意思是你不想在你的Javascript代码中间混合使用PHP,你可以在文档顶部设置一些一次性PHP来设置任何全局变量:

<script>
var myAppGlobals = {};

myAppGlobals.showCandyMenu = <?php echo ($user->name === 'Ben' ? 'true': 'false'); ?>;
// or
myAppGlobals.userName = '<?php echo addslashes($user->name); ?>';
</script>

然后使用

if (myAppGlobals.showCandyMenu)
    $("#CandyMenu").show();

// or

if (myAppGlobals.userName === 'Ben')
    $("#CandyMenu").show();

稍后从您的Javascript开始。你还在混合使用PHP和JS,但至少你是把它全部放在顶层而不是混合在一起。

当然,请记住,您从客户端设置菜单可见性的任何方法都是滥用的 - 任何具有JS知识的人都可以深入研究并显示该菜单选项。这是否是一个问题取决于你。