使用Javascript提交价值

时间:2009-12-03 07:07:27

标签: php javascript mysql ajax

我对以下功能感到困惑。请注意,我是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。

3 个答案:

答案 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 }