在数据库中,存储了许多项目。当用户加载页面时,项目将列为表的行。为了使用户可以删除元素(行),每行还提供了一个“删除项”按钮,该按钮上附加了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…