0

我想弄清楚如何使用 JavaScript 显示/隐藏 PHP 脚本。

JavaScript:

<script type="text/javascript">
function showhide(id){ 
    if (document.getElementById){ 
    obj = document.getElementById(id); 
    if (obj.style.display == "none"){ 
    obj.style.display = ""; 
    } else { 
     obj.style.display = "none"; 
    } 
  }
} 
</script>

正文代码:

<?php
echo "<a href='javascript:showhide('delivery.php');'>Show/Hide Delivery options</a>";
require "delivery.php" ?>

关于为什么/如何让它发挥作用的任何想法?

任何帮助表示赞赏!

4

4 回答 4

1

我认为您正在寻找的是 ajax(例如http://api.jquery.com/jQuery.get/

于 2012-05-08T21:26:38.803 回答
1

JavaScript 是客户端,这意味着它在您的 PC 上执行,在从服务器下载网站之后。

PHP 是服务器端的,这意味着它在服务器计算机上执行,然后将纯 HTML 页面发送到您的 PC。

这就是为什么它不可能。你必须使用 PHP 来做到这一点,使用一些变量。否则,您可以使用 javascript/ajax 向服务器发送请求,然后服务器将新信息发送回客户端,然后客户端可以更新页面。

但最好像这样在 PHP 中执行此操作:

if (isset($_GET['some_var'])) {
    switch ($_GET['some_var']) {
        default: case "blah":
                 include("somefile.php"); break;
        case "nyah":
                 include("some_other_file.php"); break;
    }
}

'some_var' 可以通过如下形式发送到 PHP 页面:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="GET">
    <input type="text" name="some_var" value="blah"/>
    <input type="submit" value="Go"/>
</form>

如果您在文本字段中输入“blah”并发送它,页面将显示“somefile.php”,但如果您输入“nyah”,它将显示“some_other_file.php”的内容。

希望这可以帮助。

于 2012-05-08T21:30:11.327 回答
1

你无法以你在这里做的方式实现你想做的事情。正如@Ozzy 在评论中所说,这是不可能的。

原因是 Javascript 代码永远不知道 PHP 代码在做什么。JS 代码所知道的只是浏览器接收到的内容。这意味着它获取delivery.php文件的内容作为页面的一部分,但不知道它来自一个单独的文件到页面的其余部分,更不用说知道那个文件被调用了。

快速的答案是在语句周围添加一个包装<div>元素。require()

这将为您提供一个您的 Javascript 代码可以针对显示/隐藏功能的元素。

因此,您的 PHP 代码现在可能如下所示:

<?php
echo "<a href='javascript:showhide('deliveryblock');'>Show/Hide Delivery options</a>";
echo "<div id='deliveryblock'>";
require "delivery.php"
echo "</div>";
?>

(这确实假设由 生成的内容delivery.php是有效的 HTML 代码,但是您没有向我们展示该文件的外观,所以我只需要做出这个假设)。

希望有帮助。

于 2012-05-08T21:33:09.640 回答
0

我认为您基本上是在尝试在页面上显示/隐藏一些内容。您的showhide函数仅适用于您网页上的某些 html 组件。因此,只需尝试将“delivery.php”的内容放入像<div id='deliverydiv'></div>. 然后使用showhide('deliverydiv').

于 2012-05-08T21:34:42.723 回答