Проверьте параметры настройки, доступные для запросов AJAX:
contentType :
Это тип содержимого запроса, который вы делаете.По умолчанию используется application / x-www-form-urlencoded.
dataType :
Это тип данных, которые вы ожидаете получить обратно.Допустимые значения: текст, XML, JSON, скрипт, HTML JSONP.Если вы не укажете значение, jQuery проверит MIME-тип ответа и примет решение на его основе.
Solution1:
Значение по умолчанию contentType
:application/x-www-form-urlencoded
.Таким образом, вы можете использовать:
$("#btnView").on('click', function () {
var dt = "A";
var cn = "B";
var sendData = { dt: dt, cn: cn } ;
$.ajax({
type: "POST",
url: "/Home/myList?param=" + "whatever",
data: sendData,
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
datatype: "json",
traditional: true
})
И на стороне сервера вы можете получить значение от var requestFormData = Request.Form;
Solution2: Если вы хотите опубликовать JSON, вы можете использовать JSON.stringify
и установите contentType: "application/json"
:
$("#btnView").on('click', function () {
var dt = "A";
var cn = "B";
var sendData = { dt: dt, cn: cn } ;
$.ajax({
type: "POST",
url: "/Home/myList",
data: JSON.stringify(sendData),
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
contentType: "application/json",
datatype: "json",
traditional: true
})
А на стороне сервера попробуйте извлечь ваши параметры в отдельный класс DTO:
public class ParentDTO
{
public string dt { get; set; }
public string cn { get; set; }
}
И принять параметры:
public IActionResult myList([FromBody] ParentDTO parentDTO)
{
...
}