jquery - 使用 JQuery 迭代 Json 集合迭代数据字符串的字符

标签 jquery asp.net-mvc json iteration

我使用 ASP.MVC 1 返回 IEnumerable 对象(例如,汽车):

public class Car : Entity<Car>
{
    public virtual string Make { get; set; }
    public virtual double Length { get; set; }
    public virtual string Colour { get; set; }
}

像这样:

[AcceptVerbs(HttpVerbs.Post)]
public JsonResult GetRoutes()
{
    IEnumerable<Car> cars = _carTask.GetCars();
    return Json(cars);
}

在我的页面中,我想迭代返回的每辆车,所以我有这个:

$.post("/Home/GetCars", null, 
    function(cars)
    {
         alert("type of object returned is " + typeof cars + ", content is " + cars);
         $.each(routes, function()
         {
              alert(this);
         });
    }
);

当我运行此命令时,第一个警报框显示:

对象类型为字符串,内容为[{"Make":"BMW"}, {"Make":"Ford"}]

这告诉我我正在返回一个字符串(我不应该返回一个对象吗?),其中包含一个带有 2 个对象的 Json 结构。然而,jquery $.each 函数然后继续迭代字符串中的每个字符,因此我收到 46 个警报框:第一个显示“[”,然后是“{”,然后是“”,然后是“M”,然后是“a” ',然后'k'...你明白了。

根据我所读到的内容,jQuery 应该将其解析为一个集合,并且应该只迭代两次来向我显示警报,每辆车一个。然后我可以执行alert(car.Make)来显示品牌,但如果我尝试这样做,我会得到未定义的结果(因为字符串没有Make属性)。

我做错了什么?感谢您的帮助,一定有一个明显的错误,但我保证我先做了很多谷歌搜索,但什么也没发现! :)

最佳答案

尝试添加类型“json”作为 $.post() 方法中的最后一个参数。另外,我认为你可以简化你的每个陈述:

$.post("/Home/GetCars", null, 
    function(cars)
    {
         $(cars).each(function() {
             alert(this); //this should point to the car. 
         });
    },
   "json"
);

关于jquery - 使用 JQuery 迭代 Json 集合迭代数据字符串的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1246014/

相关文章:

javascript - div 覆盖数组中的每个 div

javascript - 动态改变 CSS 类

javascript - 如何在 Razor View 中更新 JavaScript 中的模型值?

c# - 保护 Web 方法

javascript - 使用 join 将 JavaScript 长日期数组转换为逗号分隔的短日期字符串

javascript - 如何将 p5.js 草图中创建的变量值插入 MySQL 数据库?

javascript - JSON 对象中的数组长度返回未定义

jquery将给定类中的所有元素设置为相同的html

c# - ASP.NET MVC 中的 ViewBag 在幕后如何工作?

php - 样式表未加载到 Woocommerce 存档和单个产品页面上,使它们未格式化