【问题标题】:How to process a List<object> in jquery ajax?如何在 jquery ajax 中处理 List<object>?
【发布时间】:2014-09-26 16:58:01
【问题描述】:

情况:ajax 调用调用返回List&lt;CustomObject&gt; 的MVC 操作。

在调试期间,MVC 端显示我有,例如,20 多条记录,大约 15 列,数据采用实体框架对象格式。也就是说我可以正常看到record.id和record.name中的数据了。

数据列表被传递回 ajax.success 回调函数,但似乎只是一个描述 System.Collections.Generic.List'1[CustomObject]' 类型对象的字符串。也就是说,它只是一个字符串:System.Collections.Generic.List'1[CustomObject]'

我到底是怎么得到这些数据的

  1. javascript 可读

  2. 到一个 javascript/jquery 可读的对象中。

编辑:代码示例:

    public async Task<List<visitorInformation>> GetChartData(string startDate, string endDate) {
        //coalesce date into a single array
        DateTime[] dateRange = new DateTime[2];

        DateTime.TryParseExact(startDate, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateRange[0]);
        DateTime.TryParseExact(endDate, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateRange[1]);

        DateTime dtStartDate = dateRange[0];
        DateTime dtEndDate = dateRange[1];
        return await db.visitorInformation.Where(w => w.dateOfVisit >= dtStartDate && w.dateOfVisit <= dtEndDate).ToListAsync();
    }

【问题讨论】:

  • 您熟悉.ToList() 方法吗.. 能否展示更多代码,例如您如何使用 EF 上下文对象..?
  • 已插入代码示例。
  • 控制器代码呢?
  • 您正在尝试将数据传递给 JavaScript?听起来Web API 是您需要使用的。它会自动将列表转换为 JSON(或 XML,取决于内容协商)。您可以通过简单的 AJAX 调用检索该数据。

标签: javascript c# jquery ajax asp.net-mvc


【解决方案1】:

您不会将列表对象作为 JSON 数据返回,这是将其传递给 ajax javascript 的常用方法。

要返回 JSON 数据,您的操作应如下所示:

public JsonResult JSON(){

    string startDate = Request.Querystring["start"];
    string endDate = Request.Querystring["end"];

    return Json(GetChartData(startDate, endDate),JsonRequestBehavior.AllowGet);
}

这会将您的对象作为 JSON 响应返回,以便您的 ajax javascript 可以使用它。

然后在您的javascript中,您可以使用.get()通过ajax返回对象:

  var params = { start: "", end: "" };

  $.get("/controller/JSON", params, function(data){
      var itemsInList = data.length;
  });

【讨论】:

  • 一个问题:我以前没有见过这个 jquery 的使用,如果这有点愚蠢,请原谅:如何将数据传递给 json 动作?会不会是`$.get("/controller/JSON", data1, data2, function(data)...
  • 当然,检查修改后的代码,看看是否有意义。
  • 谢谢,看起来这可能是票,但它在返回时挂起 await db.visitorInformation.Where(w => w.dateOfVisit >= dtStartDate && w.dateOfVisit
  • .get() 默认为async:true,若要禁用此功能,请改用.ajax(),用法非常相似。 api.jquery.com/jquery.ajax
猜你喜欢
  • 2011-10-09
  • 2015-06-07
  • 2010-11-15
  • 2013-08-05
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多