【问题标题】:How to pass Json array from a controller to Javascript (ajax) in view.cshtml如何将 Json 数组从控制器传递到 view.cshtml 中的 Javascript (ajax)
【发布时间】:2016-01-06 20:07:39
【问题描述】:

我试图将一个 Document 对象数组从一个方法(比如说从一个控制器)传递到调用该方法的 JavaScript(在视图中)。由于某种原因,该方法不会传递数组(仅当数组为空时才有效)。我还尝试将所有数组成员放入一个新数组,甚至是一个列表并将其传递给视图,但它不起作用(Inspect Element -> Console = 500(Internal Server Error)) (Screenshot here)。

这里是 JavaScript 代码的一部分:

$.ajax({
            method:"get",
            data: data,
            url: url + "?binderId=" + companyId +"&description="+ data

        }).success(function (response) {
            console.log("Success");
            console.log(response);

        }).error(function (response) {
            console.log("Error");
            console.log(response);
        });

这是 C# 代码,将数组从上面发送到 JavaScript:

 public ActionResult SearchDocument(int binderId, string description)
    {
        //documents is a array
        var documents = Search.SearchDocument(binderId, description);
        return Json(documents, JsonRequestBehavior.AllowGet);
    }

我认为 JavaScript 有问题,但我不知道是什么。 谢谢!

【问题讨论】:

  • 你是在设置 'dataType' 和 'contentType' ajax 属性吗,看起来不像。
  • 我这样做了,但没有任何改变。只接收一个对象时工作正常,但接收数组时失败。
  • 您是否调试了控制器代码,以证明文档变量是包含数据的数组?尝试将debugger; 放入您的success 回调
  • 我刚刚注意到内部服务器错误的事情,对不起。问题出在控制器操作中。您可以发布 Search.SearchDocument 的代码吗?返回的是什么?
  • 这里是。 SearchDocument 接收一个数组,这很好,但是 SearchDocument 方法和 JS 之间的某些东西出错了... public static List SearchDocument(int binderId, string documentDescription) { using (var db = new ApplicationDbContext()) { var文档 = db.Documents.Where(x => x.BinderId == binderId && x.DocumentDescription.Contains(documentDescription)).ToList();退回文件; } }

标签: javascript c# arrays json ajax


【解决方案1】:

尝试返回 JsonResult 而不是 ActionResult

public JsonResult SearchDocument(int binderId, string description)

【讨论】:

  • 试过了,结果一样。
猜你喜欢
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
  • 2015-12-28
  • 2020-12-05
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多