首页 > 解决方案 > 为什么 Ajax 调用不将操作中的数据返回给成功回调函数?

问题描述

我正在尝试将部分视图 html 附加到模态弹出框的内容。以下脚本应该在单击按钮时运行“详细信息”操作并将 html 输出返回到成功回调。所以 ActionMethod 运行,但我无法将相应的视图作为参数返回 - 警报没有出现!你能发现那个脚本有什么问题吗?我无法恢复视图的原因是什么?

<!--language: lang-js-->
<script> 
        $(".detail-link").click(function () {
            var Did = $(this).data("id");
            $.ajax({
                type: 'POST',
                url: "/Home/Details/",
                data: { id: Did },
                dataType: 'html',
                succes: function myfunction(data){
                    alert(data);
                 }
            });
        });
    </script>

这是名为“详细信息”的操作方法

<!--language: lang-cs-->
 [HttpPost]
        public ActionResult Details(int? id)
        {

            HomeModel model = new HomeModel();
            var book = db.Books.Where(b => b.Id == id).Include(b => b.Author).SingleOrDefault();
            if (book == null)
            {
                HttpNotFound();
            }

            book.DisplayNumber++;
            db.SaveChanges();
            model.bookDetails = book;
            return PartialView(model);
        }

如果需要,我也可能会发布我想要返回的视图

标签: javascriptc#ajaxasp.net-mvc

解决方案


将 ActionResult 更改为 JsonResult 并返回 Json 对象。

[HttpPost]
        public JsonResult Details(int? id)
        {

            HomeModel model = new HomeModel();
            var book = db.Books.Where(b => b.Id == id).Include(b => b.Author).SingleOrDefault();
            if (book == null)
            {
                HttpNotFound();
            }

            book.DisplayNumber++;
            db.SaveChanges();
            model.bookDetails = book;
            return Json(model);
        }

推荐阅读