简体   繁体   English

如何在 AJAX POST 请求中发送@RequestParam

[英]How to send @RequestParam in AJAX POST request

I have my API which accepts Request Param:我有我的 API 接受请求参数:

    @PostMapping(value = "/export")
    @ResponseBody   
    public ResponseEntity<String> bulkExport(
        @RequestParam(value = "managedObjects", required = false) List<String> managedObjects) {
        //data
        }
   );

I want to send AJAX POST request.我想发送 AJAX POST 请求。

$.ajax({
      type: "POST",
      //url: "policy/js_policy",
      url: "/export/ ,
      async: false,
      data: { "managedObjects": ["Audit","Logs"]},
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      complete: function (XMLHttpRequest, textStatus) {
        //File Handling
      }
    });

I tried to send managedObjects in URL.我试图在 URL 中发送 managedObjects。 In data also I am sending the same.But my API is not working.在数据中,我也发送相同的数据。但我的 API 无法正常工作。 How to send the @RequestParam from AJAX POST request exactly?如何准确地从 AJAX POST 请求发送 @RequestParam?

pass a list in Query ParamQuery Param中传递一个列表

$.ajax({
      ...
      url: "/export?managedObjects=Audit,Logs" ,
      ...
    });

pass a list in Request BodyRequest Body中传递一个列表

$.ajax({
  type: "POST",
  url: "/export/",
  ...
  data: {managedObjects[0]: "Audit",
         managedObjects[1]: "Logs"}
  ...
});

Try stringifying your data:尝试对数据进行字符串化:

var data = {
   managedObjects: ["Audit", "Logs"]
}
$.ajax({
  type: "POST",
  url: "/export/",
  async: false,
  data: JSON.Stringify(data),
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  complete: function (XMLHttpRequest, textStatus) {
    
  }
});

Additionally you should use "name" instead "value" in @RequestParam:此外,您应该在@RequestParam 中使用“名称”而不是“值”:

@PostMapping(value = "/export")
@ResponseBody   
public ResponseEntity<String> bulkExport(
    @RequestParam(name = "managedObjects", required = false) List<String> managedObjects) {
    //data
    }

); );

I think the problem is just with list that you want to send in your request.我认为问题在于您要在请求中发送的列表。

var dataToSend = {
          list: [{ fieldname: 'ABC' }, { fieldname: 'DEF' }]; // your list should something like this.
    $.ajax({
      type: "POST",
      //url: "policy/js_policy",
      url: "/export/?managedObjects=" + Mos ,
      async: false,
      data: JSON.stringify(dataToSend),
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      complete: function (XMLHttpRequest, textStatus) {
        
      }
    });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM