2017-04-17 66 views
0

我正在处理如下的需求。根据复选框选择删除JSP中的多行数据(AJAX)

我存储的对象的列表(每个对象具有一个唯一的id)作为会话参数,并使用JSTL如下

<c:forEach var="list" items="${PlayerList}"> 

<tr> 
     <td> 
<img style="cursor:pointer" src="./images/delete.jpg" title="Force Delete" 
onClick="forceDelete(${list.playerId})"> 
     <td>${list.playerName}</td> 
     <td>${list.runsScored}</td> 
    </tr> 
</c:forEach> 

在jsp中在表中显示每个对象数据和AJAX功能是

<script> 
function forceDelete(playerIdValue) 
     { 
      var xmlhttp; 
      var toDelete= confirm("Do you want to Remove?") 
      if (window.XMLHttpRequest) 
      { 
       xmlhttp=new XMLHttpRequest(); 
      } 
      else 
      { 
       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.onreadystatechange=function() 
      { 
       if (xmlhttp.readyState==4 && xmlhttp.status==200) 
       { 

document.getElementById('display_div').innerHTML=xmlhttp.responseText; 
       } 
      } 
      if (toDelete== true) 
      { 
       xmlhttp.open("POST","PlayerController? 
value="+playerIdValue,true); 
       xmlhttp.send(); 

      } 
     } 
    </script> 

我处理在的PlayerController servlet的POST方法删除行

现在我要实现类似下面

<c:forEach var="list" items="${PlayerList}"> 

<tr> 
     <td><input type="checkbox"> 
     <td>${list.playerName}</td> 
     <td>${list.runsScored}</td> 
    </tr> 
</c:forEach> 
<input type="button" value="delete"> 

用户可以选择多个复选框,并单击删除按钮,然后将各行应该从JSP中删除使用AJAX

我应该如何处理这一点,任何帮助,将不胜感激。

如果需要任何额外的数据,我准备提供。

在此先感谢。

我试过这个,但似乎没有工作,告诉我我在哪里做错了。要遵循没有确切的代码细节

复选框代码`

<input type="checkbox" name="toBeDeleted[]" value="${list.playerId}"> 
<div align="center"><button onclick="forceStop()">Delete</button></div> 

JS代码

function forceStop() 
     { 
      var toBeDeleted = new Array(); 
      $("input:checked").each(function() { 
      data['toBeDeleted[]'].push($(this).val()); 
      }); 

      $.ajax({ 
      url:"PlayerController", 
      type:"POST", 
      dataType:'json', 
      data: {toBeDeleted:toBeDeleted}, 
      success:function(data){ 
      }, 
      }); 

`

回答

0

这是我做的,它的工作完全正常

在JSP中,JS功能

function forceStop() 
     { 

      var checkboxes = document.getElementsByName('toBeDeleted'); 
      var selected = new Array(); 
      for (var i=0; i<checkboxes.length; i++) { 
       if (checkboxes[i].checked) { 
        selected.push(checkboxes[i].value); 
       } 
      } 

       $.ajax({ 
        url:"PlayerController", 
        type:"POST", 
        dataType:'json', 
        data: {toDelete:selected}, 
        success:function(data){ 
         alert("SUCCESS"); 
        }, 
       }); 

     } 

内内的servlet我检索到的数组如下。

String[] toDelete = request.getParameterValues("toDelete[]"); 
    int[] toBeDeleted=new int[toDelete.length]; 
    for(int i=0;i<toDelete.length;i++) 
    { 
     toBeDeleted[i]=Integer.parseInt(toDelete[i]); 
    } 

我们需要将每个元素解析为整数,因为它们将被AJAX解析为字符串。

从控制器我做了批量删除使用DAO。

0

需要方法:

  1. 提供名称和值属性到您的复选框值为玩家ID
  2. 点击删除获取所有选中框的列表,这将得到一个值的数组,即数组玩家ID
  3. 该数组需要通过ajax请求传递给您的servlet,检索列表并删除所有记录。

如有任何问题,也会发布伪代码。

+0

基于我所尝试的编辑问题,但它不工作,告诉我我在哪里做错了 –

+0

看起来像我能够收集玩家的ID,当我点击删除按钮时,我可以看到ID我想知道如何在servlet中接收它们,并在数据库上执行删除操作 –

+0

1)您是否可以获取阵列中的播放器ID 2)如果是,请在浏览器控制台中检查它是否正确发送通过ajax请求3)servlet结束时收到什么? –

相关问题