Самый простой (или, по крайней мере, один функциональный) способ инициализации объекта JSON из URL (Geocoding API)

Я пытаюсь геокодировать в своем коде javascript API геокодирования. Я получаю определенный URL-адрес var url = "http://http://maps.googleapis.com/maps/api/geocode/json?address=New York, Manhattan&sensor=false" , из которого мне нужно получить объект JSON. Первый подход, который я использовал, был в соответствии с Википедией с использованием XmlHttpRequest, подобного этому

var my_JSON_object = {};
var http_request = new XMLHttpRequest();
http_request.open("GET", url, true);
http_request.onreadystatechange = function () {
  var done = 4, ok = 200;
  if (http_request.readyState == done && http_request.status == ok) {
       my_JSON_object = JSON.parse(http_request.responseText);
  }
};

Я запускаю код и получаю такой вывод в отладчике после запуска функции open():

http_request: XMLHttpRequest
onabort: null
onerror: null
onload: null
onloadend: null
onloadstart: null
onprogress: null
onreadystatechange: function () {
readyState: 1
response: ""
responseText: ""
responseType: ""
responseXML: null
status: [Exception: DOMException]
statusText: [Exception: DOMException]
upload: XMLHttpRequestUpload
withCredentials: false
__proto__: XMLHttpRequest

а это значит, что ничего действительно полезного явно не произошло. Мой второй подход был связан с json.org, я пытался сделать вызов с помощью JSONRequest.

var requestNumber = JSONRequest.get(
url, 
function (requestNumber, value, exception) {
    if (value) {
        document.write(value);
    } else {
        document.write(exception);
    }
}

Отладчик сказал мне, что JSONRequest не определен! Из-за того, что json.org является его собственным JS-объектом, так в чем проблема? Просто чтобы заметить, я использую правильно полученный ключ API от Google в скрипте рядом.

Объяснение, почему мое решение не удалось, и любое предложение о том, как выполнить эту задачу, будет высоко оценено!


person shtyler    schedule 29.04.2012    source источник
comment
Вероятно, это просто опечатка, но у вас дважды есть http:// в начале вашего URL.   -  person Chris    schedule 29.04.2012


Ответы (1)


Я читал о хаках, таких как междоменный XHR и прокси-серверы Apache/HTTP, но вывод состоит в том, что Javascript API V3 геокодирование — ваш единственный реальный вариант. Этот комментарий, (отсюда), хотя и не является авторитетным, показывает, что такие запросы JSON не работают. больше:

Можно было бы разумно ожидать, что API карт Google разрешит междоменный доступ, что он и делал до недавнего времени. Теперь он этого больше не позволяет; Я предполагаю, что они ссылаются на соображения безопасности, но я также думаю, что настоящая причина заключается в том, чтобы обязать вас использовать только их код для получения их услуг. Таким образом, единственный способ получить данные через javascript от клиента — использовать javascript API Google, который в любом случае дает вам почти такую ​​​​же гибкость, как прямой вызов URL-адреса API.

Этот вопрос был самым полезным Информация.

person Tina CG Hoehr    schedule 30.04.2012