使用《今日美国》人口普查API时出现无效标签错误



我试图使用jquery和json来消费今日美国人口普查API json服务。下面是代码:

var url = "http://api.usatoday.com/open/census/locations?api_key=yourapikeyhere&keyname=FIPS&sumlevid=3&keypat=36069&format=jsonp&callback=?";
        $.ajax({
            url: url,
            dataType: 'jsonp',
            type: 'GET',
            contentType: "application/json; charset=utf-8",
            success: function (result) {
                console.debug(result);
            }
        });

如果我在浏览器中点击url,这是有效的json:

{"request":{
        "keyname":"FIPS",
        "keypat":"36069",
        "sumlevid":"3",
        "year":"2010"},
    "response":[

    {"Placename":"Ontario","PlacenameFull":"Ontario County, N.Y.","FIPS":"36069","GNIS":"974133","StateAP":"N.Y.","StatePostal":"NY",
              "PctChange":"0.0768977",
              "Pop":"107931","PctHisp":"0.03408700","PctNonHisp":"0.96591300","PctWhite":"0.93650600","PctNonHispWhite":"0.91835500","PctBlack":"0.02253300","PctAmInd":"0.00255700","PctAsian":"0.01043300","PctNatHawOth":"0.00022200","PctTwoOrMore":"0.01666800","PctOther":"0.01108100","USATDiversityIndex":"0.16165100","PopSqMi":"167.60000000","LandSqMi":"644.10000000","WaterSqMi":"18.50000000","TotSqMi":"662.50000000","Lat":"42.8566949000","Long":"-77.3032768000","HousingUnits":"48193","PctVacant":"0.10736000"},

   "End"
   ]}

Firebug给出"invalid label"错误并且不返回结果。什么好主意吗?

我更新了服务器,以支持JSONP。(我本来可以早点做的,但我刚度假回来。)

您使用的API似乎不支持JSONP(响应没有封装在函数调用中)。当脚本执行时,它会导致语法错误,因为哈希字面值({...})不允许作为顶级语句。

确保API支持JSONP,如果支持,请确保为callback参数使用正确的名称。

如果它不支持JSONP,你必须通过服务器端语言调用它(或代理请求它)。


JSONP通过在函数调用中包装javascript文字来工作,例如:

jsonp_callback({the: "response"});

如果你实现了函数jsonp_callback()并执行了这个脚本,你的函数将收到响应。

服务器必须显式支持JSONP才能正常工作

最新更新