0

我使用 xhr 对象从 mapquest 开放 API(Nominatim 和 Directions)获取信息。

我的问题是它适用于 Nominatim 服务,但不适用于 Directions(使用 Firefox 最新版本测试)。我的就绪状态为 4,但状态为 0,并且它永远不会改变。

这是我的代码:

var xhr;
try
{ 
 xhr = new ActiveXObject('Msxml2.XMLHTTP');
}
catch (e)
{
    try
    {  
        xhr = new ActiveXObject('Microsoft.XMLHTTP');
    }
    catch (e2)
    {
        try
        { 
            xhr = new XMLHttpRequest();
        }
        catch (e3)
        { 
            xhr = false;
        }
    }
}

xhr.onreadystatechange  = function()                                   
{                                     
    if(xhr.readyState  == 4)
    {
        if(xhr.status == 200)
        {
            alert(xhr.responseText);
        }
    }
};

xhr.open("GET", "http://open.mapquestapi.com/directions/v1/route?format=json&routeType="+routeType+"&timeType=0&enhancedNarrative=false&shapeFormat=raw&generalize=200&locale=fr_FR&unit=k&from="+latitude+","+longitude+"&to="+json[0].lat+","+json[0].lng+"&narrativeType=none", true);
xhr.send(null);

URL 中的所有参数都在上面的代码中定义。

我只是不明白它为什么会起作用(因为它不应该因为这些请求是跨域的)以及为什么它适用于 nominatim 而不是方向!

谢谢

4

1 回答 1

0

Nominatim 支持CORS(允许浏览器对 Nomatim API 进行跨域请求)。Mapquest 没有,正如mapquest 论坛上的评论所暗示的那样。

于 2013-01-30T00:01:09.523 回答