【问题标题】:Can I store XML from a Google API in Javascript as a string?我可以将来自 Google API 的 XML 存储为 Javascript 中的字符串吗?
【发布时间】:2016-03-30 19:26:14
【问题描述】:

在我开始我的问题之前:上次我问这个问题时,你们中的几个人发布了有用的链接来解析 XML。但我的问题是首先询问如何将 XML 信息放入字符串变量中。它不是这些链接的副本。

希望我的问题是有道理的。但我正在尝试存储从 Google 地理编码 API (https://developers.google.com/maps/documentation/geocoding/intro) 获得的 XML,以便我可以自动格式化人们在某些字段中键入的地址。

基本上,我在 MS Excel 中寻找与 =WEBSERVICE([URL]) 等效的 Javascript。

这个想法是检索人们键入的地址字段,将其放入地理编码 URL,将 XML 存储为字符串(这是我遇到问题的步骤),然后将字段设置为从API。

【问题讨论】:

  • 存放在哪里?您知道 javascript 在数据持久性方面的能力有限,不是吗?
  • 在字符串变量中。我不知道。我对 Javascript 没有太多经验。
  • 是的,要跨会话在本地保存数据,您需要将其存储在 cookie 或本地存储中。要保留数据并使其在用户之间可访问,您需要一个数据库,因此最终您很可能最终会重新创建 google 开箱即用的内容。反正据我了解。也许我对你的目标感到困惑。无论哪种方式,我都建议请求 json 输出(请参阅文档),因为这至少可以为您节省解析 xml
  • 哦,我不需要在会话之间存储数据。我只需要将它存储为文本变量,这样我就可以使用查找/子字符串函数来检索地址数据并将其打印到屏幕上。

标签: javascript xml google-geocoding-api


【解决方案1】:

一个使用 jQuery 的简单示例:

var response = $.get('https://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY');
var text = response.responseText;

$.get 将返回一个jqXHR 对象,该对象公开responseText。您可以查看https://api.jquery.com/jquery.ajax/了解更多详情。

注意:以上示例将返回错误(因为我们没有提供 API 密钥),但响应格式相同。

要将 XMLDocument 实际转换为字符串,您必须使用序列化程序(请参阅Convert xml to string with jQuery)。

【讨论】:

  • 我使用了您的代码并使用了sensor=false 而不是 API 密钥(不过我确实有一个 API 密钥)。当我使用alert(typeof text); 跟踪它时,警报文本显示undefined。这应该发生吗?
  • 这是我的代码,以防您想知道(输入 URL 时 URL 工作正常):var response = $.get('https://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false');var text = response.responseText;alert(text);
【解决方案2】:

由于某种原因,其他人的回答对我不起作用。但是使用这里的代码结构:How do I get the entire XML string from a XMLDocument returned by jQuery (cross browser)?

我只是用 Google API 替换了 url(并按照建议的答案将 dataType 替换为 XML)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多