【问题标题】:how to return json value in [httpget] controller?如何在 [httpget] 控制器中返回 json 值?
【发布时间】:2018-01-20 17:37:56
【问题描述】:

我想在视图加载时从控制器返回 JSON 值以查看我的控制器代码如下。

 [HttpGet]
    public ActionResult Add()
    {
        List<selectdata_Result> tbl = new List<selectdata_Result>();
        tbl = context.selectdata("", "", "", "").ToList();
        string s = JsonConvert.SerializeObject(tbl);
        return Json(s, JsonRequestBehavior.AllowGet);
    }

我的观点在下面

          $.ajax({
              url: '@Url.Action("Add", "Home")',
              type: 'GET',
              success: function (response) {
                  alert(response);
              },
              error: function (respons) {
                  alert("error");
              }
          })

我想在警报(响应)中获取我的 json 值。给我一些解决方案。当我的页面加载时,我的 json 值为 get

【问题讨论】:

  • 删除 string s = JsonConvert.SerializeObject(tbl); - 它只是 return Json(tbl, JsonRequestBehavior.AllowGet); 它将序列化您的集合(您当前将其序列化两次)。然后在成功回调中使用循环来遍历集合)
  • @StephenMuecke 当我点击按钮转到 [http] 控制器并返回正确的 json 数据时它的工作。但在 [httpget] 相同的方法中它不起作用
  • 当然会(但是[http] 控制器是什么意思 - 你是指[HttpPost] 方法吗?)这没什么区别,因为您已经拥有JsonRequestBehavior.AllowGet
  • @StephenMuecke 但它在 httpget 中不起作用
  • 会的!您在浏览器控制台中遇到什么错误?

标签: jquery json asp.net-mvc-5 jquery-ajaxq


【解决方案1】:

试试

$.ajax({
              url: '@Url.Action("Add", "Home")',
              type: 'GET',
              dataType: 'JSON',
              success: function (response) {
                  alert(response);
              },
              error: function (respons) {
                  alert("error");
              }
          })

【讨论】:

  • 这与 OP 已经使用的代码有何不同(添加 dataType: 'JSON', 没有区别)
【解决方案2】:

删除行字符串 s = JsonConvert.SerializeObject(tbl);从控制器,它会工作。代码如下:

[HttpGet]
public ActionResult Add()
{
    List<selectdata_Result> tbl = new List<selectdata_Result>();
    tbl = context.selectdata("", "", "", "").ToList();
    return Json(tbl , JsonRequestBehavior.AllowGet);
}

而 Ajax 调用为:

$.ajax({
          url: '@Url.Action("Add", "Home")',
          type: 'GET',
          dataType: 'json',
          success: function (response) {
              alert(response.data);
          },
          error: function (respons) {
              alert("error");
          }
      })

【讨论】:

  • 它不工作只有 json 值返回我的实际视图不返回
  • 省略 JsonConvert.SerializeObject 解决了我的问题,谢谢 :)
【解决方案3】:

我会用

 [HttpGet]
    public JsonResult Add()
    {
        List<selectdata_Result> tbl = new List<selectdata_Result>();
        tbl = context.selectdata("", "", "", "").ToList();
        string s = JsonConvert.SerializeObject(tbl);
        var data = new { result = s }
        return Json(data);
    }

$.ajax({
          url: 'dom/controller/action',
          type: 'GET',
          success: function (response) {
              alert(response.data);
          },
          error: function (respons) {
              alert("error");
          }
      })

【讨论】:

    猜你喜欢
    • 2017-05-18
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 2017-07-08
    • 2022-11-27
    相关资源
    最近更新 更多