使href(锚标记)请求POST而不是GET作为传递参数

时间:2016-06-22 07:42:33

标签: javascript java jquery html spring-mvc

问题在于,当我使用以下方法时,整个网址都会显示出来。也许是因为GET请求如果href。我想避免这种情况,我想要POST请求。

的index.html

<a id="ccviewMiniStatementId">View mini statement</a>

nonFinancial.js

$('#ccviewMiniStatementId').click(function(event) {

    var ccMonthVal=$("#ccMonthId").val();
    var ccYearVal=$("#ccYearId").val();
    var cCRefNumId=$("#cCRefNumId").val();

    var errExpVal = validateCcExpiry();

    if (errExpVal==false)
    {
        event.preventDefault();
        return false;
    }

    // I am passing values to my controller and there it is GET 
    //because POST is not supported. I want to make it POST.
    $("#ccviewMiniStatementId").attr("href", "getpdfcreditcard?month="+ccMonthVal+"&year="+ccYearVal+"&cCReferenceNo="+cCRefNumId);
    $("#pdfViewer").submit();           
});

我的控制器 NonFinancial.java

@RequestMapping(value="/getpdfcreditcard", method=RequestMethod.GET, params = {"month","year","cCReferenceNo"})
public ResponseEntity<byte[]> getPDF(@RequestParam(value="month", required = true) String month,
    @RequestParam(value="year", required = true) String year,
    @RequestParam(value="cCReferenceNo", required = true) String cCReferenceNo,
    HttpServletResponse response) throws IOException, SQLException {

    logger.debug("month/year/cCReferenceNo: "+month+"/"+year+"/"+cCReferenceNo);
}

所以我想:当我点击一个锚标签时,它应该进行POST。我怎么做?我不想使用<form></form>

2 个答案:

答案 0 :(得分:0)

看起来你正在使用jQuery,所以很容易:

<div layout="row" layout-wrap>
  <div flex-gt-sm="{{vm.data.mode === 'ADD' ? 50: 25}}"></div>
  <div flex-gt-sm="{{vm.data.mode === 'ADD' ? 50: 25}}"></div>
  <div flex-gt-sm="{{vm.data.mode === 'ADD' ? 50: 25}}"></div>
</div>

答案 1 :(得分:0)

在HTML中无法使用href使用POST。但是,正如@modernator指出的那样,您可以使用JavaScript来监听click事件,然后手动触发AJAX请求。

或者,您可以使用带有隐藏输入的表单。在那里,您可以指定提交方法。例如:

<form method="post" action="<your-url>">
    <input type="hidden" name="month" value="<month-value>">
    <button type="submit">View Statement</button>
</form>
相关问题