Если вы откроете вкладку «Ответ» запроса xhr, сделанного из вашего браузера на вкладке «Сеть» инструментов dev, вы сможете увидеть подробности исключения. Вы должны получить это исключение.
System.ArgumentException: недопустимый примитив JSON: userId
Причина, по которой вы получаете это исключение, заключается в том, что с вашим текущим кодом (даже с исправленной опечаткой) вы отправляете данные, указав значение заголовка Content-Type
как "application/json
" и отправляя данные в запросе. тело как userId=r&productId=34
. Привязка модели, присутствующая в платформе MVC, будет считывать значение заголовка Content-Type
, чтобы определить, как читать опубликованные данные, и сопоставить их с параметрами вашего метода действия. Связыватель модели хочет получить строковую версию объекта данных, когда тип содержимого указан как «application / json»
Вы можете использовать метод JSON.stringify
, чтобы проверить ваш JS-объект, а также его строковую версию.
$.ajax({
url: "/addletmeknow",
type: "Post",
data: JSON.stringify({
userId: "Shyju",
productId: "abc"
}),
contentType: 'application/json',
success: success,
error: Error
});
Поскольку отправляемая модель представляет собой плоскую модель, другой вариант - не указывать заголовок типа контента.
$.ajax({
url: "/addletmeknow",
type: "Post",
data: {
userId: "Shyju",
productId: "abc"
},
success: success,
error: Error
});
Теперь метод jQuery ajax будет использовать application/x-www-form-urlencoded
в качестве значения заголовка Content-Type
, и эти данные будут отправлены как FormData (userId=r33&productId=34
) в запросе xhr.