使用href传递请求参数,而不会在请求中显示它们(使href Post而不是Get)

时间:2015-11-03 06:00:01

标签: javascript jquery jsp servlets

我的JSP中有一个html表,其中一列是锚元素。单击此锚标记我需要调用一个Servlet。在此请求中,我将文件名作为请求参数和servlet一起追加到呼叫。 喜欢

<table>
<tr><td>
<a href="/FileDownLoadServlet.dwnld?fileName=Test1.pdf&key=123456" target="_blank">Test1Container</a>
<td></tr>
<tr><td>
<a href="/FileDownLoadServlet.dwnld?fileName=Test2.pdf&key=789123" target="_blank">Test2Container</a>
<td></tr>
</table>

servlet将文件写入响应,以便在新选项卡中打开相应的pdf。

问题是在其地址栏中打开的新选项卡显示整个URL。可能是因为GET请求,如果href。 我想避免这种情况,并显示没有servlet名称及其请求参数的原始URL。如果可能,在上下文名称之后只显示地址栏中的文件名。 请建议。

1 个答案:

答案 0 :(得分:1)

JS小提琴: http://jsfiddle.net/9qacod03/

<form id = "pdfViewer" method = "post" action = "/FileDownLoadServlet.dwnld" target="_blank">
  <input type = "hidden" name = "fileName" value = "" />
  <input type = "hidden" name = "key" value = "" />
</form>

<table>
  <tr>
    <td>
      <a class = "pdfLink" fileName = "Test1.pdf" key = "123456" href = "#">Test1Container</a>
    </td>
  </tr>
  <tr>
    <td>
      <a class = "pdfLink" fileName = "Test2.pdf" key = "789123" href = "#">Test2Container</a>
    <td>
  </tr>
</table>

$(".pdfLink").click(function () {

  var fileName = $(this).attr("fileName");
  var key = $(this).attr("key");

  $("#pdfViewer").find("[name=fileName]").val(fileName);
  $("#pdfViewer").find("[name=key]").val(key);

  $("#pdfViewer").submit();

});