簡體   English   中英

從 JavaScript 獲取,解析 XML 有問題? 還是地圖 API 錯誤?

[英]GET from JavaScript, problems parsing XML? Or Maps API errors?

我正在嘗試從 Javascript 獲取 HTTP,調用 Google Maps 以獲取從 A 到 B 的傳輸持續時間,然后解析生成的 XML,如下所示:

function getTransitTime(match) {
    var homeBase = '<Address 1>';
    var distURL = 'https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&key=API_KEY_I_GOT&mode=transit&arrival_time=1519977600&origins=' + homeBase + '&destinations=' + match;

    parser = new DOMParser();
    xmlDoc = parser.parseFromString(httpGet( distURL ), "text/xml");
    var finRet = $(xmlDoc).find('duration').text()
    return finRet;
}

function httpGet(theUrl)
{
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", theUrl, true );
    xmlHttp.send( null );
    return xmlHttp.responseText;
}

我在 js 控制台中收到 NoApiKeys 和 SensorNotRequired 錯誤。 我究竟做錯了什么?

這可能還有更多問題:

  • 我不確定如何處理地址 1 中的空格(更糟糕的是,“匹配”)。

  • Duration 有兩個子字段(一個是文本),不確定解析是否正確。 請注意,我的查詢在瀏覽器中正常工作(使用相同的 API 密鑰)並且輸出 XML 粘貼在下面:

<DistanceMatrixResponse>
    <status>OK</status>
    <origin_address>New York, NY, USA</origin_address>
    <destination_address>Philadelphia, PA, USA</destination_address>
    <row>
        <element>
            <status>OK</status>
            <duration>
                <value>5100</value>
                <text>1 hour 25 mins</text>
            </duration>
            <distance>
                <value>145447</value>
                <text>145 km</text>
            </distance>
        </element>
    </row>
</DistanceMatrixResponse>

有什么幫助嗎? 我徘徊試圖做一些“簡單”的工作,但最終陷入了深淵:|

我設法解決了這個問題:

首先,通過在擴展的 manifest.json 中包含以下內容,獲得向地圖 API 發出跨域請求的權限:

"permissions": ["https://maps.googleapis.com/"] 

接下來,更改:

var finRet = $(xmlDoc).find('duration').text()

var finRet = $(xmlDoc).find('duration').find('text').text()

這是有效的,因為返回的 XML 有一個嵌套在持續時間標記內的文本標記。

最后,maps 調用的 URL 中的空格實際上沒有任何區別。 感謝大家的閱讀和貢獻。 如果有的話,我仍在尋找更清潔的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM