【发布时间】:2015-08-18 08:05:00
【问题描述】:
我需要从字符串中获取json对象并从控制器返回。
在我的控制器中,我有第二件事:
[HttpGet]
public JsonResult GetPageFilters()
{
...
...
if (settings != null)
{
var data = JsonConvert.DeserializeObject(settings.Filters); //Filter is string with json
return Json(data);
}
else
{
return null;
}
}
在我看来:
var filterOption;
$.get('Library/Books/GetPageFilters', null, function(data) {
filterOption = data;
}, "json");
控制器正常调用,字符串反序列化为对象...但function(data) 不起作用。那里什么都没有发生,我不明白为什么。
我错过了什么?
编辑:
看起来 json 的字符串出错了。 我试图将它保存在数据库中,我猜它看起来不错,但正确读取它对我来说是个问题。
function UpdateFilter() {
var filterOption = {
"filterTarget": "Books",
"filters": [
{ "cancelled": $("#showCancelledFilter").is(':checked') },
{ "completed": $("#showAllFilter").is(':checked') }
],
"page": page,
"sorting": sorting
};
var url = "Library/Books/UpdateFilter";
$.post(url, { pageFilters: JSON.stringify(filterOption) }, function (data) { });
}
似乎工作正常,但正如我已经说过的,由于某种原因,从字符串到 json 是不合适的。
【问题讨论】:
-
“什么都没有发生”是什么意思?您是否进入了成功处理程序?
-
因为它是一个 GET 方法。你需要
return Json(data, JsonRequestBehavior.AllowGet); -
这是否意味着我实际上不需要
[HttpGet]? -
你可以做到
[HttpPost],但你似乎没有更改任何数据,所以 GET 似乎更合适 -
谢谢,您能否将您的评论作为答案,以便我标记它? Aslo ...我看到了数据...但看起来反序列化出错了(我有一个4个数组(json中每个字段上的数组和每个数组内的空数组)...我将在编辑中描述,我是如何尝试的dave json 在数据库中,然后从字符串中获取它。
标签: c# jquery json asp.net-mvc