2009-11-28 5 views
0

Я пытаюсь отправить HTTP-запрос через AJAX от клиента к службе геокодирования Google Maps. Я продолжаю получать статус 0.xmlHttp-статус запроса 0 для google maps http geocoder

Я знаю, что запрос действителен, потому что, когда я ввожу URL прямо в адресную строку браузера, я получаю действительный результат. Вот код (предположим, что «URL_STRING» имеет действительный URL для службы геокодирования - Я испытал это уже как упоминалось выше):

var request = GXmlHttp.create(); 
request.open("GET", url_string, true); 
request.onreadystatechange = function() { 
    if (request.readyState == 4) { 
     alert("STATUS IS "+ request.status); 
    } 
} 
request.send(null); 

Мое приложение работает на Google AppEngine, и я получаю ошибку, когда я пытаюсь он локально, но также при развертывании и попытке его использования.

Любая помощь будет оценена по достоинству.

ответ

0

0 - код состояния, который вы получаете для полностью отказавшего соединения, где нет ответа HTTP для возврата кода состояния. Это может быть, например. различные ошибки сокета (хотя IE даст вам код ошибки WinSock, например, 12029).

Когда я ввожу URL-адрес прямо в адресную строку браузера, я получаю действительный результат.

Я подозреваю, что URL-адрес отсутствует на вашем сервере. GXmlHttp, будучи крошечной оберткой вокруг XMLHttpRequest, не может выполнять кросс-доменные запросы.

Использование specific class Google дает вам возможность делать геокодирование, а не пытаться сделать это с помощью простого XMLHttpRequest.

1

Вы не можете отправить свое собственное XmlHttpRequest в Google, поскольку это нарушает Same Origin Policy и поэтому отклоняется браузером. Как сказал бобин, используйте предоставленные классы Google для этого. Они обойти это через умные DOM-хаки, которые вам не нужно переопределять.

+0

Большое спасибо, не осознал ограничение перекрестного домена. – Shazoo

Смежные вопросы