2017-11-11 215 views
0

我一直在试图从我的控制器得到我的看法的响应,但我得到的只是纯JSOn显示(Firefox:图像附加)或提示为JSON文件下载。我尝试了很多方法。请有人给我看看或给我的代码,以便我可以在视图上至少获得成功,并可以显示至少enter image description here的警报。如何得到一个JSON结果/响应查看

public JsonResult GetGata() 
    { 
     List<ProdVM > pvl = new List<ProdVM>(); 
     try 
     { 
      ProdVM pvm1 = new ProdVM(); 
      pvm1.ProductID = 1; 
      pvm1.ProductName = "Computer"; 
      pvl.Add(pvm1); 
      return Json(pvl, JsonRequestBehavior.AllowGet); 
      } 

     catch (Exception) 
     { 
      throw; 
     } 
    } 
$(document).ready(function() { 
$(document).ready(function() { 
    $('#myGrid').DataTable({ 
     "ajax": { 
      "url": "/Home/GetGata/", 
      "dataSrc": "" 
     }, 
     "columns": [ 
     { "data": "ProductName" }, 
     { "data": "ProductID" } 
     ] 
    }); 
}); 

});

回答

0

数据表插件期望AJAX端点以这种格式

{"data":[["1","Computer"],["2","Camera"]]} 

可以看到,返回数据,每个项是一个数组(一个字符串数组,其中每个串产品属性值)

这应该工作

public ActionResult GetData() 
{ 
    var items = new List<string[]> 
    { 
     new string[] {"1", "Computer"}, 
     new string[] {"2", "Camera"} 
    }; 
    return Json(new { data = items }, JsonRequestBehavior.AllowGet); 
} 

这应该工作假设你有一个这样的表在页面

<table id="example" class="display" cellspacing="0" width="100%"> 
    <thead> 
     <tr> 
      <th>Id</th> 
      <th>Name</th> 
     </tr> 
    </thead> 
</table> 

和JS代码来调用端点获得数据,并使用了数据表

$(function() { 
    $('#example').DataTable({ 
     "ajax": "@Url.Action("GetData")" 
    }); 
}); 
+0

谢谢您的回答。但是,我仍然遇到类似页面的错误。 firefox只显示json值和IE提示JSon下载。请有人帮助我。我被困在这里,无法练习或学习任何关于来自.net控制器的json响应,我在成功获得响应并在html上显示。请有人看到这种情况,请帮助我。 –

+0

当您运行该页面时,您将收到警告?如果您尝试直接访问端点,则可能会根据浏览器设置获取错误。试着用postman/fiddler/advanced rest client chrome插件来访问端点 – Shyju

+0

我可以在邮差中得到Json结果。但我需要在.cshtml(查看文件)。我通过本地访问URL。为了学习目的,我需要为开发模式开发所有样本。你能否给我一个Hello world类型的例子,你可以在你的Visual Studio的本地主机上看到,其中reponse来自控制器的JsonResult返回类型,并且你的jquer的成功可以在alert中捕获它? –