2

我正在尝试在 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 中,它什么也不返回。

我真的不知道是什么导致了这种情况,我会很感激可以提供的任何帮助。

谢谢。

4

1 回答 1

0

我相信您需要更改浏览器设置才能使这项工作在您尝试从脚本进行跨站点调用时工作。

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

如果你把它放在一个 IFRAME - 至少值得测试 - 确保你在 IFRAME 设置中启用跨站点脚本。

于 2012-11-30T04:50:55.020 回答