Ошибка недопустимой метки при использовании API USA Today Census - PullRequest
1 голос
/ 28 августа 2011

Я пытаюсь использовать json-сервис USA Today Census API, используя jquery и jsonp.Вот код:

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 выдает ошибку «недопустимая метка» ине возвращает результат.Есть идеи?

Ответы [ 2 ]

2 голосов
/ 08 сентября 2011

Я обновил сервер, чтобы поддержать JSONP. (Я бы сделал это раньше, но я только что вернулся из отпуска.)

0 голосов
/ 28 августа 2011

Похоже, что используемый вами API не поддерживает JSONP (ответ не заключен в вызов функции). И когда скрипт выполняется, это приводит к синтаксической ошибке, поскольку хеш-литералы ({...}) не допускаются как операторы верхнего уровня.

Убедитесь, что API поддерживает JSONP, а если это так, убедитесь, что вы используете правильное имя для параметра callback.

Если он не поддерживает JSONP, вам придется вызывать его через серверный язык (или запросы прокси к нему).


JSONP работает, заключая литерал javascript в вызов функции, например:

jsonp_callback({the: "response"});

Если вы реализуете функцию jsonp_callback() и выполняете этот скрипт, ваша функция получит ответ.

Сервер должен явно поддерживать JSONP, чтобы это работало.

...