Немного странно. Если все следующие программы входят в проект ASP.NET Core 6 MVC, проблем не возникнет.
Но если разделить программу. Ajax находится в проекте ASP.NET Core 6 MVC, а функция C# — в проекте веб-API ASP.NET Core 6. Когда Ajax вызывает функцию C#, я всегда получаю ошибку 400 неверный запрос.
Как решить эту проблему?
Javascript (Ajax):
var data = {
value1: "ProposerMail",
value2: "ExpextMail",
};
var url = "https://localhost:7253/Values/api/Test666";
$.ajax({
url: url,
type: 'POST',
data: data,
}).done(function (data) {
var lsTemp;
lsTemp = "AAA";
})
.fail(function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.status);
alert(textStatus);
alert(errorThrown);
});
С#:
[HttpPost]
[Route("api/Test666/")]
public IActionResult Test666(string value1, string value2)
{
return Ok(value1);
}
Я не могу найти ответы на соответствующие вопросы на сайте, поэтому надеюсь, что кто-нибудь сможет дать совет, который поможет решить проблему.
Вам необходимо включить contentType в запрос Ajax, чтобы указать MIME-тип (который будет отправлен в заголовке Content-Type).
$.ajax({
url: url,
type: "POST",
data: data,
contentType: "application/json"
})
Спасибо всем за помощь, проблема решена
Js::
[HttpPost]
[Route("api/Test666")]
public IActionResult Test666([FromBody] MyModel model) // Use a model class
{
return Ok(model.Value1); // Return the value1 property
}
public class MyModel
{
public string Value1 { get; set; }
public string Value2 { get; set; }
}
C#::
var lsTemp;
lsTemp = "AAAA";
var data = {
value1: "ProposerMail",
value2: "ExpextMail",
};
var url = "https://localhost:7253/Values/api/Test666"; // Remove "Values" from the route
//https://localhost:7253/Values/api/Test666
$.ajax({
url: url,
type: 'POST',
contentType: 'application/json', // Set the content type
data: JSON.stringify(data), // Serialize the data
}).done(function (response) {
var lsTemp = "AAA";
console.info(response); // Log the response
}).fail(function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.status);
alert(textStatus);
alert(errorThrown);
});
вам следует использовать класс модели для значений. также ваш запрос будет отправлен в формате JSON или в форме данных?