Google Geocoding API зависает при загрузке

Я пытаюсь использовать Google GeoCoding API в Dynamics CRM 2011, и у меня возникают проблемы. Я написал следующую функцию JavaScript:

function geocodeXML()
{
    var mDataPath = "http://maps.googleapis.com/maps/api/geocode/xml?address=WV1+1UL&sensor=false";
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    alert(1);
    xmlDoc.load(mDataPath);
    alert(2);
    var theLat = xmlDoc.getElementsByTagName("lat")[0].childNodes[0].nodeValue;
    var theLng = xmlDoc.getElementsByTagName("lng")[0].childNodes[0].nodeValue;
    alert(theLat + ", " + theLng);
}

Я запустил это локально на своем компьютере, и он отлично работает - он выполняет код и дает мне окно предупреждения с широтой и долготой. Однако, как только я включаю его в CRM, он отказывается запускаться. Я добавил окна предупреждений, как указано выше, и это строка между двумя предупреждениями (xmlDoc.load(mDataPath);), которая вызывает проблему. Я получаю окно предупреждения с «1», а затем больше ничего. Я попытался включить код в функцию CRM (которая по какой-то причине выдает мне ошибку «Отказано в доступе»), и я попытался обернуть его в HTML и включить в качестве iframe.

Я видел, что этот API возвращает тег с именем «Статус», который должен давать такие ответы, как «ОК», «ZERO_RESULTS», «OVER_QUERY_LIMIT», «INVALID_REQUEST» и т. д., поэтому я знаю, что это не проблема с квотами или синтаксисом моего запроса. - как будто API не может быть достигнуто с сервера по этому адресу. Как я уже сказал, локальный запуск кода работает нормально, и я получаю ответ от API (со статусом «ОК»), но как только он попадает в CRM, он ничего не возвращает.

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

Спасибо.


person Jon Evans    schedule 29.11.2012    source источник
comment
Вы используете его в iFrame?   -  person Yacine Zine    schedule 29.11.2012
comment
Я пробовал оба - безуспешно. Тем не менее, я нашел еще одну тему здесь, которая вроде как ответила на мой вопрос. Похоже, поскольку это междоменный запрос, я не могу сделать это с помощью этого метода. Есть JavaScript API, в отличие от XMLHTTP, который более полезен - я еще не заставил его работать так, как хотелось бы, но он возвращает информацию из Google Maps, которая больше, чем это сделал.   -  person Jon Evans    schedule 29.11.2012


Ответы (1)


Я считаю, что вам нужно изменить настройки браузера, чтобы это работало, поскольку вы пытаетесь выполнить межсайтовый вызов из сценария.

Перейдите в Настройки безопасности в IE. В разделе «Разное» выберите «Доступ к источникам данных между доменами» и включите его. В разделе «Сценарии» перейдите к «Включить фильтр XSS» и отключите его. Не совсем оптимально, но я думаю, что это может сработать для вас - и, по крайней мере, подтвердить для вас, что это проблема межсайтового скриптинга.

Если вы поместите это в IFRAME — стоит хотя бы протестировать — убедитесь, что вы включили межсайтовые сценарии в настройке IFRAME.

person Nicknow    schedule 30.11.2012