将参数发送到servlet

时间:2014-08-19 16:11:02

标签: twitter-bootstrap jsp servlets

我有一个显示搜索结果的页面。在该页面中有一个表,其中包含用于下载删除文件选项的文件。如果单击文件名,则会下载该文件,但如果单击“删除”,则会删除该文件。 出于安全原因,您需要密码才能删除该文件。需要在服务器上验证此密码。 当您单击删除时,它会显示一个要求输入密码的模态窗口。 现在我的问题是如何将密码和我要删除的文件的ID发送到servlet?因为当我点击删除时,模态窗口没有文件id的信息。

表中的结果如下:

<table>
   <tr>
      <td><a href="?id=11"</td>
      <td><a data-toggle="modal" data-target="#myModal">Delete!</a></td>
   </tr>
</table>

1 个答案:

答案 0 :(得分:0)

使用data-id属性保存文件ID并在click事件函数中检索它,并使用AJAX将文件ID和密码传递给服务器。

Html看起来像:

<a  class="open-delete-dialog btn btn-danger"
    data-toggle="modal"
    data-target="#myDeleteModal"
    data-id="11">Delete!</a>
<div class="modal hide" id="myDeleteModal">
 <div class="modal-header">
    <button class="close" data-dismiss="modal">×</button>
    <h3>Enter Password to delete the file: <span id="fileId"></span></h3>
  </div>
    <div class="modal-body">
        <p>Password:</p>
        <input type="password" name="password" id="password"/>
    </div>
 <div class="modal-footer">
    <button type="button"
            class="btn btn-default"
            data-dismiss="modal">Close</button>
    <button id="submit" type="button" 
            class="btn btn-primary">Submit</button>
 </div>
</div>

使用Javascript:

//set fileId to the modal
$(document).on("click", ".open-delete-dialog", function () {
     var myFileId = $(this).data('id');
     $(".modal-header #fileId").val( myFileId );     
});

//get fileId and password and make AJAX post   
$('button#submit').click(function(e){
    $.ajax({
        url: 'your servlet url',
        type: 'POST',
        data: {password: $('.modal-body #password').val(),
               fileId: $('.modal-header #fileId').val()
              },
        success: function(response) {
            //show response to user
        },
        error: function(jqXHR, e) {
            alert('error'+e);
        }
      });
    e.preventDefault();
});

最后在Servlet#doPost()方法中获取密码和fileId如:

String password = request.getParameter("password");
String fileId = request.getParameter("fileId");

//Here, do your delete and return response back