动态按钮始终在执行时执行onclick事件

时间:2011-08-23 17:13:58

标签: php jquery

所以大家好我现在有一个大问题是根据发送到页面的变量而制作的按钮,在这种情况下,它是一个按钮,当它被点击它将访问数据库并提取数据库中的所有内容并把它放到excel格式。现在的问题是当按钮生成时它总是执行数据库搜索和文件制作。我知道它必须这样做,因为现在制作按钮的方式,有没有改变这个?

if ($action_db) echo "<button class=\"btn\" onClick='".getUDB()."'>" . DBUser . "</button>";

到此:

if ($action_db) echo "<button class=\"btn\" onClick=\"getUDB()\">" . DBUser . "</button>";

并通过java脚本发送事件,以便它执行我的PHP文件中的getUDB()方法?

感谢。

好的,所以我去了,并且使用了Sam所说的并将其放在JQuery上的部分建议,并且改变是这样的

if ($action_db) echo "<button class=\"btn\" id=\"UDB\">" . DBUser . "</button>";

JQuery的:

<script type="text/javascript">
    $(document).ready(function(){  
        $("#UDB").click(function(){  
          <?getUDB();?>  
        });  
    });  

好的问题是,当我选择客户菜单或菜单的任何其他部分来访问网页的那一部分时,它会自动执行getUDB方法,并且不允许我访问任何其他内容。任何建议???

2 个答案:

答案 0 :(得分:1)

您需要向服务器发送请求以启动任何服务器端以响应事件,无论是通过传统的回发还是通过AJAX。

我建议你把你的按钮变成表格,用用户的ID代替隐藏输入的值:

if ($action_db) {
    ?>
    <form action="/getUDB">
        <input type="hidden" name="DBUser" value="<?= DBUser ?>" />
        <button class=\"btn\" type="submit"><?= DBUser ?></button>
    </form>
    <?
} 

然后设置第二个脚本来处理对/getUDB

的POST请求

答案 1 :(得分:1)

如果您不希望在加载页面时调用PHP函数getUDB(),那么您是对的 - 您希望将其移至 Javascript 函数中。

通过执行echo "foo" . getUDB() . "bar",我假设您的网页加载缓慢。要解决此问题,您可以使用带有AJAX调用的Javascript。所以你可能想:

  1. 创建一个单独的PHP文件,调用getUDB()
  2. 在原始页面上创建一个Javascript函数,该函数向这个新的单独的PHP文件发出GET请求。使用jQuery最容易做到这一点,这使得AJAX请求变得简单易行 - check out this page
  3. 编写适当处理该页面响应所需的Javascript。
  4. SitePoint 有一个good tutorial on jQuery and AJAX,请查看。