代码之家  ›  专栏  ›  技术社区  ›  Prabhu

有关在ASP.NET MVC中使用jQuery的帮助

  •  1
  • Prabhu  · 技术社区  · 14 年前

    我的应用程序有一个类似于Facebook的“显示所有评论”。当用户点击“显示所有”链接,我需要更新我的列表,其中最初有多达4条评论与所有评论。我先展示一些代码,然后问一些问题:

    jQuery:
    ShowAllComments = function (threadId) {
        $.ajax({
            type: "POST",
            url: "/Home/GetComments",
            data: { 'threadId': threadId },
            dataType: "json",
            success: function (result) {
                alert(result);
            },
            error: function (error) {
                alert(error);
            }
        });
    };
    
    Home Controller:
     // GET: /GetComments
     [HttpPost]
     public JsonResult GetComments(int threadId)
     {
         var comments = repository.GetComments(threadId).ToList();
          return Json(comments );
     }
    

    1. 当我尝试GET而不是POST时,出现了以下错误:“此请求已被阻止,因为在GET请求中使用此请求时,敏感信息可能会泄露给第三方网站。要允许GET请求,请将JsonRequestBehavior设置为AllowGet。“在发出这些ajax请求时,通常建议使用POST而不是GET吗?如果没有,我如何让它与get一起工作?在哪里将JsonRequestBehavior设置为AllowGet?

    2 回复  |  直到 14 年前
        1
  •  2
  •   CrazyDart    14 年前
    1. 在返回Json中设置。我只想用post,但如果你想让自己难堪,就用get。

      public JsonResult blah() return Json(“obj”,JsonRequestBehavior.AllowGet);

    2. 这是真的,当大多数ORM对象被序列化时,序列化会尝试搜索ORM需要的隐藏的东西,以及(听起来像你的情况)所有的延迟加载的东西。。。这会导致不好的魔力。我能提出一个建议吗?为什么不让MVC做它擅长的事情并为您生成视图呢?您可以使用jQuery.load并使用视图。

        2
  •  0
  •   Wyatt Barnett    14 年前

    1. 尝试 return Json(comments, JsonRequestBehavior.AllowGet);
    2. 对于任何即将发生的事情,您都需要创建一个非常简单的视图模型对象,而不是将域实体发送到网络上。正如您所发现的,EntityFramework中发生了许多与序列化不兼容的奇特事情。