无法将数据从控制器返回到AJAX中的视图

时间:2016-09-15 12:51:01

标签: jquery ajax asp.net-mvc

我正在将view的内容发送到controllerAJAX。它似乎运行良好,因为它会点击action method并正确执行。但是,我无法从action中获取view返回的数据。

它遗失了什么吗?

注意:我确实尝试调试代码,但一旦通过动作方法,它就不会回到函数中。

按照 AJAX 代码:     

function CategoryChanged() {
    var value = $("#ContentType").val();
    $.ajax({
        cache: false,
        url: '@Url.Action("Action", "Home")',
        type: "POST",            
        data: { code: value }
    }).done(function (data) {
       console.log(data)
        var response = data;                
        if (data != null) {
            $("#Content").val(data.content);
        }
    });

    };

</script>

控制器代码:

 [HttpPost]      
    public ActionResult Action(int code)
    {
        using (SERVFL_DMSEntities db = new SERVFL_DMSEntities())
        {
            var cust1 = db.HomePageCustomizations.Where(r => r.IsPublic == true && r.ContentType == code).OrderByDescending(r => r.ID).FirstOrDefault();
            string cust2 = cust1.Content;
            return new JsonResult()
            {
                Data = new { Content = cust2}
            }; 
        }
    }

我在控制台上检查了网络,它表示我正在接收数据。 line console.log(data)行确实包含所需的数据。

可能的问题 - 看过很多这样的问题后,我看到了将更改网址改为/Home/Action的回复。这实际上是一个问题还是没关系?

2 个答案:

答案 0 :(得分:0)

我希望以下代码适合您..

AJAX代码:

function CategoryChanged() {
    var value = $("#ContentType").val();
    $.ajax({
        cache: false,
        url: '@Url.Action("Action", "Home")',
        type: "POST",
        data: { code: value }
    }).done(function (data) {
        console.log(data)
        $('#Content').html(data);
    });
};

控制器代码:

[HttpPost]      
    public ActionResult Action(int code)
    {
        using (SERVFL_DMSEntities db = new SERVFL_DMSEntities())
        {
            var cust1 = db.HomePageCustomizations.Where(r => r.IsPublic == true && r.ContentType == code).OrderByDescending(r => r.ID).FirstOrDefault();
            string cust2 = cust1.Content;
            return Content(cust2, "text/html"); 
        }
    }

答案 1 :(得分:0)

尝试使用Json()方法返回数据:

[HttpPost]      
    public ActionResult Action(int code)
    {
        using (SERVFL_DMSEntities db = new SERVFL_DMSEntities())
        {
            var cust1 = db.HomePageCustomizations.Where(r => r.IsPublic == true && r.ContentType == code).OrderByDescending(r => r.ID).FirstOrDefault();
            string cust2 = cust1.Content;
            return Json(new { result = cust2 }, JsonRequestBehavior.AllowGet); 
        }
    }

在你的观点中:

function CategoryChanged() {
    var value = $("#ContentType").val();
    $.ajax({
        cache: false,
        url: '@Url.Action("Action", "Home")',
        type: "POST",
        data: { code: value }
    }).done(function (data) {
        if(data.result != undefined){
            $('#Content').html(data.result);
        }
    });
};