0

我在一个简单的评论数据库 MVC 程序中制作了一个“喜欢”按钮。当我将鼠标悬停在“Like”按钮上时,我将评论的 ID 传递给 HomeController 中的 ActionResult。问题(我认为)是我不知道如何将喜欢的 IEnumerable 列表传递给 ajax。

脚本和 HTML 部分:

HTML:

<a href="#" class="likes" title="No likes yet." id="@comment.ID">Like this</a>

脚本:

$(".likes").hover(function (event) {

    var Liker = { "CID": event.target.id };

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/Home/ShowLike/",
        data: JSON.stringify(Liker),
        dataType: "json",
        success: function (data) {
            $.each(data.Name, function (value) {
                alert(value);
            });
        },
        error: function (xhr, err) {
            // Note: just for debugging purposes!
            alert("readyState: " + xhr.readyState +
            "\nstatus: " + xhr.status);
            alert("responseText: " + xhr.responseText);
        }
    });

});

HomeController -> ShowLike

    [HttpPost]
    public ActionResult ShowLike(Liker ids)
    {
        LikesRepository lkrep = new LikesRepository();

        IEnumerable<Like> list = lkrep.GetLikes(ids.CID);

        return Json(list);
    }

喜欢存储库

 public class LikesRepository
 {
    CommentDBDataContext m_db = new CommentDBDataContext();

    public IEnumerable<Like> GetLikes(int iden)
    {
        var result = from c in m_db.Likes
                     where c.CID == iden
                     orderby c.Name ascending
                     select c;

        return result;
    }

    public void AddLike(Like c)
    {
        m_db.Likes.InsertOnSubmit(c);
        m_db.SubmitChanges(); //This works
    }
}
4

1 回答 1

0

在深入研究该问题后,我们发现它实际上触发了内部服务器错误(500)。这是由将 LINQ to SQL 对象序列化为 JSON 的循环引用引起的。这个问题讨论了好几遍...

如何删除实体框架中的循环引用?

我如何解决 Json 序列化循环引用错误?

使用 MVC3 和 EF4 CTP5w 进行 JSON 序列化的循环引用异常

另一种解决方案是将数据作为字符串列表返回,因为它们只需要名称。

于 2013-04-09T16:42:42.050 回答