【问题标题】:Parsing JSON in Kendo UI Window control在 Kendo UI Window 控件中解析 JSON
【发布时间】:2013-07-10 11:49:57
【问题描述】:

我有一个返回 JSON 的控制器操作,如下所示。我没有收到任何错误。如果我填充静态数据,它会显示在窗口中。

public ActionResult Reader()
        {

            return Json(new 
            {
                ReaderName = "First Floor",
                Cardholder = "John, Doe",
            });
        }

现在我在客户端有一个剑道 UI 窗口,我想从动作中填充这些数据。 我做错了什么,因为我无法将这些数据解析到窗口中。 模板似乎不起作用! 下面是客户端代码。

wnd = $("#details")
                        .kendoWindow({
                            title: "Reader Name",
                            modal: false,
                            visible: false,
                            resizable: false,
                            width: 300,
                            content: {
                                url: "/List/Reader",
                                dataType: "json",
                                template:"ReaderName #=ReaderName#"

                            }

                        }).data("kendoWindow");

【问题讨论】:

  • 您有任何错误吗?您是否检查过服务器是否使用控制台返回正确的响应? MVC 倾向于要求 AJAX 请求具有正确的标头才能返回 JSON
  • @Blade0rz:我使用提琴手检查过。看起来 JSON GET 请求被阻止了。一旦我设置了 jsonrequestbehaviour,它就开始工作了。无论如何,谢谢。如果您可以将其发布为答案,我会投票。

标签: javascript html asp.net-mvc json kendo-ui


【解决方案1】:

要从 ASP.NET MVC 中的 GET 请求返回 JSON,您需要指定 JsonRequestBehaviour:

public ActionResult Reader()
        {

            return Json(new 
            {
                ReaderName = "First Floor",
                Cardholder = "John, Doe",
            }, JsonRequestBehavior.AllowGet);
        }

【讨论】:

  • 虽然我还有其他返回 JSONRESULT 的操作,但它工作得很好。为什么仅此一项会引起问题?我提到的其他操作也在同一个控制器中,并在同一个客户端页面中使用。
  • 也许它们是由 POST 请求请求的。这不需要 JsonRequestBehavior
  • 我注意到另一个请求是 JSON /List/GetContents HTTP/1.1
【解决方案2】:

当您返回的 JSON 对象是单数时,您使用的是 data.ReaderName。

你可以这样做:

public ActionResult Reader()
        {

            return Json(new 
            {
                data = new {
                   ReaderName = "First Floor",
                   Cardholder = "John, Doe"
                }
            });
        }

或者简单地说:

template:"ReaderName #= ReaderName #"

【讨论】:

  • 我试过这个但没有运气。尝试了模板的第二个选项。
  • 你也可以试试第一个选项吗?带数据标签?
  • 你能在 firebug 中查看返回的响应吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多