将Javascript事件添加到PHP中的按钮 - php

在数据库中,存储了许多项目。当用户加载页面时,项目将列为表的行。为了使用户可以删除元素(行),每行还提供了一个“删除项”按钮,该按钮上附加了onclick事件。这是生成表的PHP部分。

for ($i=0; $i<$num_books; $i++)
{
    $book  = mysql_fetch_row($classics);
    $shop .= "<tr>\n";
    $shop .= "<td>".$book[0]."</td>\n";
    $shop .= "<td><input type='button' onclick='remove_item()' value='Remove' /></td>\n";
    $shop .= "</tr>\n";
}

remove_item()函数是在JQuery中外部定义的(请参见下文)。

但是,现在单击按钮将导致错误:ReferenceError: Can't find variable: remove_item。我相信这是因为DOM不知道PHP返回的remove_item()函数。

如何纠正?

完整的标记在这里

 <html>
     <head>
     <script type='text/javascript'
             src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js">
     </script>
     <script type="text/javascript"
             src="../behaviour/interactions.js">
     </script>
     </head>
     <body>
         <h1>Publications database</h1>
         <div id="items"></div>
     </body>
 </html>

完整的interactions.js脚本在这里

$('document').ready(function()
{
    // Path to MySQL configuration.
    var server = '../server/'
    var data   = '../data/'

    function mysql_connection_setup()
    {
        $.get(data + 'mysql_connection_setup.php');
    }

    function populate()
    {
        $.get(server + 'shop.php', cb);
    }

    function remove_item()
    {
        console.log("Remove item.");
    }

    // Generic AJAX callback.
    function cb(response)
    {
        $('#items').html(response);
    }

    mysql_connection_setup();
    populate();
}); // End ready

参考方案

将其放在<head>标记中:

<script>
  function remove_item()
  {
      console.log("Remove item.");
      // Fancy AJAX call to manipulate database.
  }
</script>

这样,可以全局访问该功能。或者,至少,您必须声明函数before对其进行调用。

好的,这应该是解决方案:
首先,全局声明变量。

<head>
  <script>
    var mysql_connection_setup, populate, remove_item, cb ;
  </script>
</head>

然后将函数分配给变量:

$('document').ready(function()
{
    // Path to MySQL configuration.
    var server = '../server/'
    var data   = '../data/'

    mysql_connection_setup = function()
    {
        $.get(data + 'mysql_connection_setup.php');
    }

    populate = function()
    {
        $.get(server + 'shop.php', cb);
    }

    remove_item = function()
    {
        console.log("Remove item.");
    }

    // Generic AJAX callback.
    cb = function(response)
    {
        $('#items').html(response);
    }

    mysql_connection_setup();
    populate();
}); // End ready

您不能在其他函数中声明函数。但是您可以在内部创建变量回调。

故障排除“警告:session_start():无法发送会话高速缓存限制器-标头已发送” - php

我收到警告:session_start()[function.session-start]:无法发送会话缓存限制器-标头已发送(错误输出开始如果我将表单数据提交到其他文件进行处理,则可以正常工作。但是,如果我将表单数据提交到同一页面,则会出现此错误。请建议<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0…

使用PHP包含时的淡入淡出过渡 - php

我正在尝试使用jQuery或CSS(或其他方式!)在DIV中包含的php页面上创建淡入淡出或滑动过渡。我四处搜寻,发现了很多淡入淡出过渡的示例,这些实例彼此淡入淡出div或隐藏内容淡入淡出,但是这种情况略有不同。我有一个DIV,其内容由导航栏控制。选中后,每个页面都可以使用PHP成功地包含在div中,但我想使内容淡入和淡出。关于如何在页面更改之间进行漂亮过渡…

AJAX调用只能与$(document).on('click')一起使用 - php

我有一个显示数据库条目的表。用户能够为每一行打开一个弹出菜单。选项之一是删除数据库条目,并且该表应通过AJAX调用相应地刷新。只要有人单击#delete-toggle中的table-popup,我就会在HTML页面上进行AJAX调用(table-popup是div,当有人单击每行中存在的表中的table-edit-button时出现的表): <div …

将输入类型复选框关联到输入类型文本 - php

我有一个问题,我需要将输入类型复选框与输入类型文本关联。情况如下:从数据库中提取数据。 PK数据是复选框的值。当复选框选择输入类型的文本时,您可以在其中输入特定数字。现在的问题是,选中所有类型的复选框输入文本都会被激活。我希望通过选择复选框输入,仅启用与复选框相关联的输入。我的HTML代码(此代码创建一个输入复选框,并为数据库中的每个记录输入文本,而我要激活…

jQuery显示基于序列化哈希的隐藏选择菜单 - php

我试图通过使用Ajax和序列化的哈希值来使选择菜单显示隐藏。昨晚我有这个系统,但是我将#selector从表单更改为div,突然停止了运行。我不得不扩展表单以获取更多附加数据,并且不想为此立即序列化所有数据,因为这将给系统带来额外压力。该页面按预期工作。它显示了第一个选择,允许我选择一个选项,我可以看到AJAX发布,但是哈希值是空的,我相信这会破坏上面的PH…