首页 > 解决方案 > 如何使用 JavaScript XMLHttpRequest 将多个参数传递给@RequestBody

问题描述

我有那个 POST 方法:

function saveSchemaInDatabase(schemaName) {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
    };

    xhttp.open("POST", "/user/saveSchemaInDatabase", true);
    xhttp.send(schemaName);
}

我正在以这种方式在我的控制器中捕捉到那张照片:

@PostMapping(path = { "/user/saveSchemaInDatabase" })
public String saveSchemaInDatabase(@RequestBody String schemaName) {

    return "redirect:/user";
}

有人可以告诉我如何向该控制器发送多个参数吗?例如我想要这样的东西:

//shoot
function saveSchemaInDatabase(schemaName, diagramJson) {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
    };

    xhttp.open("POST", "/user/saveSchemaInDatabase", true);
    xhttp.send(schemaName, diagramJson);
}

//catch
@PostMapping(path = { "/user/saveSchemaInDatabase" })
public String saveSchemaInDatabase(@RequestBody String schemaName, @RequestBody String diagramJson) {

    return "redirect:/user";
}

我希望你知道我的意思。我的方法当然行不通。出现错误 400。

在此处输入图像描述

有人能帮我吗?我受够了 :(

标签: javascriptspring

解决方案


您可以创建 FormData 对象并在其中添加任意数量的值

var data = new FormData();
data.append("email", "eve.holt@reqres.in");
data.append("password", "pistol");

然后将此 formData 对象发送到 post 请求

像这样

xhttp.send(data);

推荐阅读