ajax - 如何从服务器接收html和json数据?

时间:2015-08-31 06:46:48

标签: c# ajax json asp.net-mvc-5

我引用了this topic,但它并没有解决我的问题。

我使用mvc 5和c#。我通常使用此代码从服务器接收数据类型为json的数据。

$.ajax({
   url: "/MyController/MyAction",
   type: "POST",
   dataType: "json",
   success: function (data) {
      if (data.result) {
         alert('successfull');
      }
      else {
         alert(data.ex);
      }
   }
});

和控制器代码:

[httppost]
public ActionResult MyAction()
{
   try
   {
      return Json(new { result = "true", ex = "" });
   }
   catch (Exception e)
   {
      return Json(new { result = "false", ex = e.Message });
   }
}

我用这种方式表示数据类型是html:

$.ajax({
   url: "/MyController/MyAction",
   type: "POST",
   dataType: "html",
   success: function (data) {
      $(".myDiv").append(data);
   }
});

和控制器应该是:

[httppost]
public ActionResult MyAction()
{
   return PartialView("_MyPartialView");
}

我的问题是:有没有办法将所有这些组合成一个?

有点像这样:

$.ajax({
   url: "/MyController/MyAction",
   type: "POST",
   dataType: "json" or "html",
   success: function (data) {
      if (data.result) {
         $(".myDiv").append(data);
      }
      else {
         alert(data.ex);
      }
   }
});

和想象力控制器代码:

[httppost]
public ActionResult MyAction()
{
   try
   {
      return PartialView("_MyPartialView");
   }
   catch (Exception e)
   {
      return Json(new { result = "false", ex = e.Message });
   }
}

1 个答案:

答案 0 :(得分:0)

是的,你可以:

@section scripts
{
    <script>
        $(function() {
            $.ajax({
                url: "/Home/MyAction",
                type: "POST",
                success: function (data) {
                    if (!data.result) {
                        $(".myDiv").append(data);
                    }
                    else {
                        alert(data.ex);
                    }
                }
        });
        });
    </script>
}

因此,如果data不包含匿名对象,则表示它包含PartialView返回的HTML。