Jquery从JSON获取数据(未定义)

时间:2015-03-17 11:48:51

标签: javascript jquery json

当我试图从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)
});

我只需从数据中获取起始值,我该如何解决这个问题?

5 个答案:

答案 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);
    }
 });