将 dataTable 以 JSON 格式 (ajax) 传递给 MVC 控制器 (JAVA)

Pass dataTable in JSON format (ajax), to a MVC Controller (JAVA)

我是 AJAX 的新人,我正在努力将对象传递给控制器​​。

我试过这个:

  $(document).ready(function(){
        $('#mov').click(function(){
            var dni = parseInt($('#dni').val());
            
            var table = $('#tablaSeleccionados').tableToJSON();
            
            $.ajax({
                type:'POST',                
                url:'${pageContext.request.contextPath}/saveMovBienes',
                data:  {dni:dni,table:table},
                dataType: "json"                
            })
        })
    })

控制器

@PostMapping("/saveMovBienes")
    public String saveMovBienes(@RequestParam(name="dni", required=false) Integer dni,
                                @RequestParam(name="table", required=false) String listado) {
        
        
        System.out.println("PER_ID= "+dni);
        System.out.println("LIST= "+ listado);
        
        return "";
    }

尝试将“listado”的格式更改为列表、Json、字符串,什么都没有...

如果我将“toString()”添加到我的 var table,我会看到控制器中的元素,但像这样:'object [Object]'、'object [Object]'

如有指导将不胜感激。

您可能希望在请求正文中将数据作为 JSON 发送,因为您正在创建 POST 请求:

$.ajax({
    type: 'POST',
    url: ...,
    data: JSON.stringify({ dni: dni, table: table }),
    dataType: "json",
    contentType: 'application/json; charset=utf-8',
})

在后端,您可以有一个 @RestController,它将接收数据传输对象 (DTO) 中用 @RequestBody 注释的数据。

首先,您必须为请求正文创建一个 DTO:

public class MyRequest {
   private String dni;
   private String table;

   // Getters and setters

}

现在,您可以创建其余控制器:

@RestController
public class MyController {

    @PostMapping("/saveMovBienes")
    public String saveMovBienes(@RequestBody MyRequest request) {
        System.out.println("PER_ID= " + request.getDni());
        ...
    }
}