当我试图从json数据中获取值时,我得到了未定义的
$.get( baseURL + 'vacation/show/' + name_surname, function( data ) {
alert(data); // return [{"id":"1","title":"Testas","start":"2015-03-04","end":"2015-03-04"}]
alert(data.start); // return undefined (should be here 2015-03-04)
});
我只需从数据中获取起始值,我该如何解决这个问题?
答案 0 :(得分:0)
使用此:
$.get( url, function( data ) {
/* do stuff */
}, 'json');
或者这个:
$.getJSON( url, function( data ) {
/* do stuff */
});
答案 1 :(得分:0)
你可以这样做:
$.ajax({
type: 'GET',
url: baseURL + 'vacation/show/' + name_surname,
dataType: 'json',
success: function(data) {
for(var i = 0; i < data.length; i++) {
console.log(data[i].start);
}
},
error: function(e) {
console.log(error);
}
});
答案 2 :(得分:0)
从数据&#39;访问Json数据之前对象,您需要将其解析为Json对象。
您可以通过以下方式实现此目的:
var parsedJson=$.parseJSON(data)
此后您可以访问json对象,如:
alert(parsedJson[i].start);
其中&#39; 我&#39;是Json对象中第N个数据集的索引,它可以取0,1,... N之间的任何数值。
希望这有助于!!
答案 3 :(得分:0)
如果您的数据不是对象,则需要从中创建一个对象才能访问其值。我不确定它目前是什么。因此,我提出了检查类型的条件,然后相应地发出警报。
$.get( baseURL + 'vacation/show/' + name_surname, function( data ) {
alert(data);
// return [{"id":"1","title":"Testas","start":"2015-03-04","end":"2015-03-04"}]
if (typeof data === "object") {
alert (data[0].start);
} else {
alert (JSON.parse(data)[0].start);
}
});
演示@ fiddle沿同一行。
答案 4 :(得分:0)
Ty to all,它现在工作正常,只是想知道,或者我在下一步做得很好,如果我从数组for循环检索然后再将日期再次推入数组以获得最小日期,或者它不会是重复工作?
$.getJSON( baseURL + 'vacation/show/' + name_surname, function( data ) {
if(data != '') {
var dates = [];
for(var i = 0; i < data.length; i++) {
var date = new Date(data[i].start);
dates.push(date);
}
var minDate = new Date(Math.min.apply(null, dates));
var year = minDate.getFullYear();
var month = minDate.getMonth();
$('#calendar').fullCalendar('gotoDate', year, month);
}
});