通过JSON抓取API并显示

时间:2013-04-19 08:18:54

标签: jquery json api

我无法显示通过JSON获取API的数据。我的代码如下

var nextSessionAPI = 'www.someapi.co.uk';
getSessionValues(exhibitionID,sessionKey);
function getSessionValues(exhibitionID,sessionKey) {
    jQuery.getJSON(nextSessionAPI, function(data) {
        jQuery.each(data.Data.Session, function(index, sessions) {
            console.log('success');
            if(jQuery.trim(sessions.StartDate).exists()) {
                 console.log(sessions.StartDate);
            };  
        });
    });
}

检查控制台我正在获取API,所以我认为我的代码可以运行到console.log('success');.

API如下:

{
    "Parameters":{
        "EditionId":45,
    },
    "Data": 
    [
        {
            "__type":"Session:ID",
            "Id":
                {
                    "Id":1251,
                },
            "DisplayName":"Some event",
            "EndDate":"\/Date(1366712700000)\/",
            "StartDate":"\/Date(1366711200000)\/"
        }
    ]
}

非常感谢任何帮助。附:对我来说很容易,我的JS和JSON并不是最强的!

3 个答案:

答案 0 :(得分:0)

json不包含任何名为Sessions for Data的属性,因此您必须将脚本更改为jQuery.each(data.Data, function(...))

var nextSessionAPI = 'www.someapi.co.uk';
getSessionValues(exhibitionID,sessionKey);
function getSessionValues(exhibitionID,sessionKey) {
    jQuery.getJSON(nextSessionAPI, function(data) {
        jQuery.each(data.Data, function(index, sessions) {
             /* do funky stuff here */
        });
    });
}

答案 1 :(得分:0)

你的修复:

var nextSessionAPI = 'www.someapi.co.uk';
getSessionValues(exhibitionID,sessionKey);
function getSessionValues(exhibitionID,sessionKey) {
    jQuery.getJSON(nextSessionAPI, function(data) {
        jQuery.each(data.Data, function(index, sessions) {
            console.log('success');
            if(jQuery.trim(sessions.StartDate).exists()) {
                 console.log(sessions.StartDate);
            };  
        });
    });
}

data.Data是会话列表。数据没有隐藏密钥:Session

答案 2 :(得分:0)

jQuery.trim返回一个字符串,您无法在其上调用exists,这可能是您收到错误的原因。如果我在字符串上调用存在,我会收到错误“TypeError:Object aaa has method with exists'”。由于StartDate在您的JSON中是“/ Date(1366711200000)/”,因此它将是有效日期或null,因此......

尝试替换该行:

if(jQuery.trim(sessions.StartDate).exists())

只需简单:

if(sessions.StartDate)