javascript - Google Geocoding API 挂起负载

标签 javascript xml dynamics-crm-2011 google-geocoder xmldom

我尝试在 Dynamics CRM 2011 中使用 Google 的 GeoCoding API,但遇到了问题。我编写了以下 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 返回一个名为“Status”的标签,它应该给出像“OK”、“ZERO_RESULTS”、“OVER_QUERY_LIMIT”、“INVALID_REQUEST”等响应,所以我知道这不是配额或语法的问题我的请求 - 好像无法从该地址的服务器访问 API。正如我所说,在本地运行代码工作正常,我从 API 得到响应(状态为“OK”),但一旦它在 CRM 中,它就什么都不返回。

我真的不知道是什么原因造成的,如果能提供任何帮助,我将不胜感激。

谢谢。

最佳答案

我认为您需要更改浏览器设置才能在您尝试从脚本进行跨站点调用时使其正常工作。

转到 IE 中的安全设置。从杂项中选择“跨域访问数据源”并启用它。从脚本转到“启用 XSS 过滤器”并禁用它。不是最佳选择,但我认为它可能对您有用 - 并且至少向您确认这是一个跨站点脚本问题。

如果将其放入 IFRAME 中 - 至少值得测试 - 请确保在 IFRAME 设置中启用跨站点脚本。

关于javascript - Google Geocoding API 挂起负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13623127/

相关文章:

javascript - 在网站上显示 DB 的值变化

javascript - 如何使用 Apps 脚本将秒表的最终读数发送到电子表格

xml - Golang XML 属性和值

email - 通过进程处理 "send email"步骤的可重用且稳健的模式

c# - 在 catch 语句之外抛出语句

localization - 在翻译文件外修改 CRM 2011 中的翻译值

javascript - 如何使用 javascript 中的坐标突出显示字符串中的单词?

javascript - Gremlin,javascript : where is the function "valueMap()" imported from?

swift - 在 swift 中解析 XML 失败并出现 nil 错误

java - SAX异常 : Unexpected end of file after null