Как сделать AJAX POST вызов с 2 параметрами - PullRequest
0 голосов
/ 23 апреля 2020

Я использую ASP. NET Core, и у меня есть метод в контроллере, который выглядит следующим образом:

[HttpPost]
public IActionResult RegisterAdmin([FromBody]Admin newAdmin, [FromBody]string password)
{
    IActionResult result;
    ....
}

Затем у меня AJAX вызов, подобный этому:

const admin = {
    username: $("#username").val()
};

const password = $("#password").val();

$.ajax({
    url: "/admin/registeradmin",
    method: "POST",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify({ admin, password })
})

Метод RegisterAdmin запущен, но они всегда равны нулю. Я знаю, что могу поместить их в 1 объект, но мне нужно, чтобы он работал следующим образом.

Ответы [ 3 ]

0 голосов
/ 23 апреля 2020

Вам необходимо сопоставить объект администрирования с тем же именем и именем параметра data: JSON.stringify({ newPassword: admin, password })

$.ajax({
    url: "/admin/registeradmin",
    method: "POST",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify({ newPassword: admin, password })
})
0 голосов
/ 23 апреля 2020

преобразовать две переменные в объект

var params = new Object();
params.username = $("#username").val();
params.password = $("#password").val();

$.ajax({
    url: "/admin/registeradmin",
    method: "POST",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify(params)
})
0 голосов
/ 23 апреля 2020

Попробуйте использовать объект formData следующим образом:

// Assuming you have

// an object:
const admin = {
    username: $("#username").val(),
};

// a string:
const password = $("#password").val();

// an whatever else...

// Create a formdata
let dataToBeSent = new formData();

// Append your things. It's a key/value pair.
dataToBeSent.append("admin", admin);
dataToBeSent.append("password", password);

$.ajax({
    url: "/admin/registeradmin",
    method: "POST",
    contentType: "application/json; charset=utf-8",
    data: dataToBeSent
})

Используйте ключи на стороне сервера для получения значений.

...