Jam*_*len 2 iteration asp.net-mvc jquery json
我正在使用ASP.MVC 1来返回一个IEnumerable对象(例如,Cars):
public class Car : Entity<Car>
{
public virtual string Make { get; set; }
public virtual double Length { get; set; }
public virtual string Colour { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
像这样:
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult GetRoutes()
{
IEnumerable<Car> cars = _carTask.GetCars();
return Json(cars);
}
Run Code Online (Sandbox Code Playgroud)
在我的页面中,我想迭代返回的每辆车,所以我有这个:
$.post("/Home/GetCars", null,
function(cars)
{
alert("type of object returned is " + typeof cars + ", content is " + cars);
$.each(routes, function()
{
alert(this);
});
}
);
Run Code Online (Sandbox Code Playgroud)
当我运行它时,第一个警告框说:
对象的类型是字符串,内容是[{"Make":"BMW"},{"Make":"Ford"}]
这告诉我我得到一个字符串(我不应该得到一个对象?),包含一个带有2个对象的Json结构.然而,jquery $ .each函数然后继续迭代字符串中的每个字符,所以我得到46个警告框:第一个显示'[',然后'{',然后''',然后是'M',然后是'a ',然后'k'......你明白了.
根据我的阅读,jQuery应该将其解析为一个集合,并且应该只迭代两次以向我显示警报,每个汽车一个.然后我可以做警告(car.Make)来显示品牌,但如果我尝试我得到未定义(因为字符串没有Make属性).
我究竟做错了什么?感谢任何帮助,肯定有一个明显的错误,但我保证我已经做了很多谷歌搜索,并没有得到任何东西!:)
尝试添加类型"json"作为$ .post()方法中的最后一个参数.另外,我认为你可以简化你的每个陈述:
$.post("/Home/GetCars", null,
function(cars)
{
$(cars).each(function() {
alert(this); //this should point to the car.
});
},
"json"
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4692 次 |
| 最近记录: |