【问题标题】:Parse XML response from API, Javascript, Ajax解析来自 API、Javascript、Ajax 的 XML 响应
【发布时间】:2011-04-30 21:30:58
【问题描述】:

我有一个 Rails 应用程序,我想使用 Javascript (ajax) 解析来自 API 的 xml 响应。 我试过了:

$(document).ready(function()
{
  $.ajax({
    type: "GET",
    url: "http://localhost:3000/users/mike.xml",                                
    dataType: "xml",
    success: parseXml

  });
});

function parseXml(xml)
{
...
}

但不工作。当我使用本地 xml 文件 e.x url: 'data.xml' 更改“url”时, 工作正常!

如何解析这个响应?

任何帮助将不胜感激:-)

【问题讨论】:

标签: javascript ruby-on-rails xml ajax


【解决方案1】:

正如 Max 所建议的,在 Firefox 浏览器中安装和使用 Firebug 非常有帮助,这样您就可以查看 GET 请求和响应。您的问题没有太多可继续的地方,但听起来像是“服务器”端的问题。

当你说它不起作用时,你的意思是没有调用 parseXml(xml) 吗?在您的 AJAX 请求中,您定义了一个成功处理程序 - 如果您的 GET 请求失败,则永远不会调用该处理程序。我发现定义通用回调(JQuery 的“完整”,看起来就像您正在使用的那样)更有用,因为无论响应如何,它都会被调用。然后,您只需自己检查成功或失败并采取适当的措施。

【讨论】:

  • firebug 控制台输出:GET localhost:3000/users/mike.xml 200 OK 298ms jquery.min.js(第 130 行)ParamsHeadersPostPutResponseCacheHTMLXML(空字符串)
  • 当我从浏览器调用 localhost:3000/users/mike.xml 我的 xml 返回正常
  • 如果您查看空响应的标题,Content-Type 是什么?内容长度?
【解决方案2】:

尝试从您的 URL 中删除“.xml”。我相信 AJAX 调用默认接受 xml 响应,因此在请求标头和 URL 中包含 xml 可能会使控制器感到困惑。不过这只是猜测。

【讨论】:

  • nothing..似乎唯一的方法是 jsonp(带填充的 json)。我可以抓住这个响应,但在我的萤火虫控制台中有 1error...(无效标签)
  • 你的控制器是做 format.xml { render: => @object.to_xml } 还是发送一个 xml 模板?
【解决方案3】:

如果 URL 与您的 JavaScript 页面不在同一个域中,由于跨域安全策略,您的浏览器将阻止它工作。检查您是否通过与您在 ajax 调用中请求的 URL 完全相同的 URL 呈现页面(因此在 localhost 示例中,请确保您没有在 127.0.0.1 URL 或类似的 URL 上运行服务器那个)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 2012-10-26
    • 2012-02-05
    • 1970-01-01
    相关资源
    最近更新 更多