2009-12-03 45 views
0

林有点卡住用下面的函数。请注意,我是一个总的小白与JavaScript/AJAX,所以请与我裸露:提交值用JavaScript

<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数据库中删除。我不知道如何做到这一点,所以任何建议将非常感激!

注:$孩子,和父母$作为PHP文件中生成的字符串,我用它来给每个元素的唯一的ID。

+0

我不是一个很棒的服务器端程序员,但我很快挑选了一些东西。如果有这样的事情,我是一个相当不错的JavaScript程序员。您的问题:您是否可以在同一个removeElement函数中通过XMLHttpRequest发送cgi,restlike或动态脚本标记请求回服务器? – jeremyosborne 2009-12-03 07:14:21

+0

@jeremyosborne - > urmmm?我不会有丝毫的线索?当谈到JavaScript时,我总是喜欢。 – Lea 2009-12-03 07:19:20

+0

你使用的是一些客户端框架,jquery,scriptaculos,moo工具。这一切都变得非常容易。 – 2009-12-03 07:21:15

回答

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框架全面发展。

+0

嗨,谢谢!这一切工作正常,除了被删除的元素,只有链接被删除?我尝试了link.closest('tr')。remove(),并且只是将tr改为div ...但它不起作用?有什么建议么? – Lea 2009-12-03 08:14:04

+0

取决于您想要删除的内容。如果删除链接位于要删除的元素中,则.closest('div');应该管用。如果不是,你必须尝试别的。查看http://docs.jquery.com/上关于遍历和选择器的jQuery文档。 – 2009-12-03 13:56:06

+0

感谢您的帮助! – Lea 2009-12-04 04:07:37

1

可以说,我想用一个ID

jQuery来删除一个实体 - $。员额() 这是一个简单的POST请求到服务器,而不必使用更复杂的$一个简单的方法。 ajax函数。它允许指定一个单一的回调函数,当请求完成时(并且只有当响应具有成功的响应代码时)才会执行该回调函数。 Jquery post docs

在服务器假设你有一个开放的数据库连接。

的mysql_query( “DELETE FROM TABLE WHERE ID =” $ _ POST [ 'ID']);

on mysql_query这里

发现编辑:

所以ajax开机自检完成后,下面将只删除元素。注意第一个arg是链接到将采取的操作的脚本,第二是要发送的数据,在这种情况下,ID柱值将是{child.id}和第三是将采取匿名内联回调函数删除元素客户端的操作。

<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> 
+0

谢谢!那么我怎样才能将它整合到现有的代码中而不会破坏removeElement()的功能?你能举个例子吗? – Lea 2009-12-03 07:37:32

+0

再次感谢!我收到来自萤火虫的错误*使用您的片段缺少正式参数。还有URLTOSCRIPT - ?将网址替换为处理数据的页面?很抱歉,如果我的noobness令人讨厌 – Lea 2009-12-03 08:16:01

+0

是替换urltoscript包含{},并将第二个参数$ child.id替换为所需的实际值。即ID = 3或ID = SWK01 ... – 2009-12-03 08:34:35

1

当你调用该函数,你会希望把你的PHP变量的标签,像这样:

<?php echo $parent; ?>

<?php echo $child; ?>

在函数的定义,你会想摆脱PHP风格的变量,并使用类似:

function removeElement(parentDiv, childDiv) { //CODE }

+0

JS函数位于PHP页面的函数中。它仍然会按照代码的建议输出。 – Lea 2009-12-04 04:07:03