Использование broadbandmap.gov json сервисных ошибок - PullRequest
0 голосов
/ 22 августа 2011

Я пытаюсь использовать службы json из broadbandmap.gov, чтобы я мог отображать провайдеров широкополосного доступа и их скорости в области. Вот пример URL:

http://www.broadbandmap.gov/internet-service-providers/70508/lat=30.1471824/long=-92.033638/%3Ejson

Я использую jquery для использования сервиса, однако он дает мне недопустимую ошибку метки в firebug:

var url = "http://www.broadbandmap.gov/internet-service-providers/70508/lat=30.1471824/long=-92.033638/%3Ejson";
        //var url = "http://www.broadbandmap.gov/broadbandmap/broadband/fall2010/wireline?latitude=" + lat + "&longitude=" + long + "&format=json";

        $.ajax({
            url: url,
            dataType: 'json',
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            success: function (result) {
                console.debug("in success");
                console.debug(result);
                //success, execute callback function.
            },
            error: function (result) {
                console.debug("in error");
                console.debug(result);
            }
        });

Странно то, что при ошибке Invalid Label в Firebug он действительно имеет правильный ответ:

{ "статус": "OK", "ResponseTime": 7, "Месса ... // www.cscic.state.ny.us/broadband/"}}}

Я пытался установить dataType в json, jsonp и другие типы, но безрезультатно. Я также попробовал GET вместо POST, но это тоже не сработало. Кто-нибудь знает, что мне не хватает?

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Эта ошибка возникает, потому что служба возвращает JSON, а не JSONP.Ваш браузер не позволит вам обрабатывать прямой JSON из междоменного источника.

Чтобы служба возвращала JSONP, вы должны использовать специально отформатированный URL.Если вы перейдете на страницу результатов поиска без модификатора "/> json" ( ссылка ), вы увидите ссылку на страницу с надписью "Вызов API".Если вы наведете указатель мыши на эту ссылку, она предоставит вам правильный URL-адрес для вызова беспроводного / проводного API.Используйте один из этих URL в вашем вызове ajax с типом возврата JSONP и обратным вызовом, и все должно быть готово.

Я создал обновленную скрипку на http://jsfiddle.net/qsY7h/1/.

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

Это междоменный запрос, поэтому вы должны использовать тип данных JSONP - API поддерживает этот тип возврата.URL-адрес, который вы указали в своем примере, ничего не дал мне, поэтому я проверил Документы разработчика Broadbandmap и нашел альтернативный вызов.Пожалуйста, найдите пример на http://jsfiddle.net/szCAF/.

Самый важный момент, на который стоит обратить внимание, это "callback =?"в URL.jQuery использует это, чтобы сообщить API, какое имя функции обернуть вокруг вывода (все это прозрачно выполняется с помощью jQuery).

...