我使用Yii2框架已近一年了,现在这是我第一次使用Ajax和数组。我有一个Ajax请求:
$.post("/laboratorio/analitos-grupos/analitos-grupos", json)
.done(function(data) {
console.log("Data Loaded: " + data);
console.log("First object: " + data[0]);
});
但控制台显示:
Data Loaded: [{"id":6,"color":"Blue"},{"id":4,"color":"Brown"},{"id":12,"color":"Red"}]
First object: [
我认为它应该显示:
Data Loaded: [{"id":6,"color":"Blue"},{"id":4,"color":"Brown"},{"id":12,"color":"Red"}]
First object: {"id":6,"color":"Blue"}
我如何获得第一个对象? jQuery是在Yii2中使用Ajax的最佳方式吗? 我在Google上找不到完整的例子。
答案 0 :(得分:3)
您将获得一个JSON字符串而不是一个对象数组。您可以通过在jQuery.post()
中的第4个参数中指定json
来指定jQuery转换它:
$.post("/laboratorio/analitos-grupos/analitos-grupos", json, null, "json")
.done(function(data) {
console.log("Data Loaded: ", data);
console.log("First object: ", data[0]);
});
或者,将回调作为成功函数:
$.post("/laboratorio/analitos-grupos/analitos-grupos", json, function(data) {
console.log("Data Loaded: ", data);
console.log("First object: ", data[0]);
}), "json");
答案 1 :(得分:2)
您需要将传入的JSON string
解析为JavaScript对象。
$.post("/laboratorio/analitos-grupos/analitos-grupos", json)
.done(function(data) {
console.log("Data Loaded: ", JSON.parse(data));
console.log("First object: " + JSON.parse(data)[0]);
});