我尝试在 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/