我有通过单击信息复选框来发出AJAX请求的代码。不幸的是,该信息未发送。有人知道问题出在哪里吗?
$.ajax({
url: "/addletmeknow",
type: "Post",
data: {
userId: "@ViewBag.UserName",
productId: "@ViewBag.ProductID"
},
//data:data,
dataType: "json",
//contentType: 'application/json',
contentType: "application/json;harset=utf-8",
success: success,
error: Error
})
});
});
var Error = function(e) {
alert("error " + e.data);
}
var success = function(e) {
alert("success " + e);
}
[HttpPost]
[Route("~/addletmeknow", Name = "AddLetMeKnow")]
public JsonResult AddLetMeKnow(string userId, string productId)
{
bool res = true;
return Json(res);
}
答案 0 :(得分:0)
如果您在开发工具的“网络”标签中选中了从浏览器发出的xhr请求的“响应”标签,则可以看到异常详细信息。您一定会遇到此异常。
System.ArgumentException:无效的JSON原语:userId
出现此异常的原因是,在当前代码(即使输入错误已固定的情况下)下,您正在发送数据,同时将Content-Type
标头值指定为“ application/json
”并发送请求正文中的数据为userId=r&productId=34
。 MVC框架中存在的Model绑定器将读取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
标头值,并且此数据将在xhr请求中作为FormData(userId=r33&productId=34
)发送。