我对以下功能感到困惑。请注意,我是javascript / ajax的总菜鸟,所以请跟我一起出去:
<script type="text/javascript">
function removeElement($parentDiv, $childDiv){
if (document.getElementById($childDiv)) {
var child = document.getElementById($childDiv);
var parent = document.getElementById($parentDiv);
parent.removeChild($child);
}
}
</script>
<a href=\"javascript:;\" onClick=\"removeElement('$parent','$child');\">x</a>
此函数删除子元素及其内容,这在客户端非常有用!但我想在同一个实例中将值传递给服务器,因此也可以从mysql数据库中删除元素的内容。我不知道怎么做,所以任何建议都将非常感谢!
注意:$ child和$ parent是在php文件中生成的字符串,用于为每个元素提供唯一的ID。
答案 0 :(得分:3)
为了让您的生活更轻松,请使用jQuery或类似的框架。以下是如何在jQuery中执行此操作:
$(function() {
$('.delete').click(function() {
var link = $(this);
var id = link.attr('id').replace('element_', '');
$.ajax({
url: 'handler.php',
data: {
element: id
},
type: 'post',
success: function() {
link.remove();
// Or link.closest('tr').remove() if you want to remove a table row where this link is
}
});
return false;
});
});
HTML:
<a href="#" class="delete" id="element_20">Remove</a>
和handler.php:
mysql_query("DELETE FROM `table` WHERE id = '".mysql_real_escape_string($_POST['element'])."'");
永远记得逃避数据库输入!
如果你是一个如你所说的总菜鸟,你可能不会理解所有这些,所以我建议你阅读一些关于jQuery的AJAX功能以及使用jQuery或类似的JavaScript框架进行整体开发的内容。
答案 1 :(得分:1)
假设我想删除使用ID的实体
JQUERY - $ .post() 这是一种简单的方法,可以将简单的POST请求发送到服务器,而无需使用更复杂的$ .ajax函数。它允许指定一个回调函数,该函数将在请求完成时执行(并且仅当响应具有成功的响应代码时)。 Jquery post docs
在服务器上假设您有一个开放的数据库连接。
mysql_query(“DELETE FROM TABLE WHERE ID =”。$ _ POST ['ID']);
此处找到更多on mysql_query
编辑:
因此,以下内容仅在ajax帖子完成时删除元素。请注意,第一个arg是将执行操作的脚本的url,第二个是要发送的数据,在这种情况下,ID post值将是{child.id},第三个是将要采取的anon内联回调函数删除元素客户端的操作。
<script type="text/javascript">
function removeElement($parentDiv, $childDiv){
if (document.getElementById($childDiv)) {
var child = document.getElementById($childDiv);
var parent = document.getElementById($parentDiv);
$.post('{URLTOSCRIPT}', 'ID=$child.id',function () { parent.removeChild($child); });
}}
</script>
答案 2 :(得分:1)
当您调用该函数时,您希望将PHP变量放在标记中,如下所示:
<?php echo $parent; ?>
和
<?php echo $child; ?>
在函数定义中,您将希望摆脱PHP样式变量并使用类似:
function removeElement(parentDiv, childDiv) {
//CODE
}