控制器没有得到JSON数据
我试图JSON数据传递从视图控制器,但控制器获得空所有我在这里尝试每一件事情来解决这个问题,但没有找到任何解决办法的时候是我的控制器和JSON数据控制器没有得到JSON数据
$("#ex_save").on("click",function() {
var array = @Html.Raw(Json.Encode(Model));
var json = JSON.stringify(array);
$.ajax({
type: "POST",
url: "/Equipment/BulkUpdate",
data: { jsonCollection : json },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function() {
console.log("Saved");
},
error: function (e) {
console.log(e);
}
});
});
这是我的ajax方法将数据传递给控制器。 这里是我的控制器来获得这些数据: -
[HttpPost]
public ActionResult BulkUpdate(string jsonCollection)
{
try
{
return View();
}
catch
{
throw;
}
}
你需要做的这
$("#ex_save").on("click",function() {
var array = @Html.Raw(Json.Encode(Model));
var jsonData = {jsonCollection : array};
var postJson = JSON.stringify(jsonData);
$.ajax({
type: "POST",
url: "/Equipment/BulkUpdate",
data: postJson,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function() {
console.log("Saved");
},
error: function (e) {
console.log(e);
}
});
});
你在做什么是你已经使用JSON.stringify()
的JSON转换成array
变量,然后你到新的JSON对象{ jsonCollection : json }
作为POST请求主体分配这一点。因此,它是像 {'name':'test1', 'age':'12'}
一个有效的JSON对象,然后jQuery的可能不将其作为JSON数据,而是它序列化到name=test1&age=12
从而得到错误 "Invalid JSON primitive: name"
而在你的情况,"Invalid JSON primitive: jsonCollection"
。所以请尝试使用上述代码。和
它帮助现在没有得到错误,但仍然没有获得控制器的集合值。 – Abhay
但我认为这里的问题是解决错误。现在,您需要检查服务器中的响应数据或请求负载并进行调试。 –
我也认为它应该是绿色标记的答案解决了错误。 –
$("#ex_save").on("click",function() {
var array = @Html.Raw(Json.Encode(Model));
var jsonData = {jsonCollection : array};
var postJson = JSON.stringify(jsonData);
$.ajax({
type: "POST",
url: "/Equipment/BulkUpdate",
data: postJson,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function() {
console.log("Saved");
},
error: function (e) {
console.log(e);
}
});
});
而不是在控制器尝试获取字符串获取ICollection的
[HttpPost]
public ActionResult BulkUpdate(ICollection<your_class_type> jsonCollection)
{
try
{
return View();
}
catch
{
throw;
}
}
有你内JSON发送JSON,而不是仅仅使用标准ModelBinder的具体原因是什么?看起来你只是增加了复杂性,除了给自己更多的工作之外没有任何理由。 –
@RoryMcCrossan我有我展示的视图,以便用户可以对其进行编辑,然后按提交保存编辑的表格,但我已经分页所以只通过第一页的数据采集控制器,所以我想这样。 – Abhay
你传递一个字符串,并期望得到一个字符串,但你的$就调用告诉它,它实际上是JSON(如果它不是,它是一个字符串)。将contentType更改为字符串或将其删除。 https://stackoverflow.com/a/18701357/2181514 –