【问题标题】:Parsing the National Threat Level XML File with jQuery使用 jQuery 解析国家威胁级别 XML 文件
【发布时间】:2009-07-09 20:37:39
【问题描述】:

我正在尝试使用 jQuery 来解析他们在 XML file 中的 DHS 威胁级别,但我似乎无法让它工作。我对 Javascript 和非展示性 jQuery 非常陌生,所以我可能遗漏了一些明显的东西。

这是 XML 文件:

<?xml version="1.0" encoding="UTF-8" ?> 
<THREAT_ADVISORY CONDITION="ELEVATED" /> 

这是我写的 Javascript:

$(document).ready(function() {
    $.ajax({
        type     :  'GET',
        url      :  'http://www.dhs.gov/dhspublic/getAdvisoryCondition',
        dataType :  'xml',
        success  :  function parseThreatLevel(xml) {
                        var threatLevel = $(xml).find('threat_advisory').attr('condition');
                        $('#nationalThreatLevel').append(threatLevel);
                    }
    });
});

以下是我尝试使用的 HTML。提前感谢您的任何帮助或建议!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js'></script>
    <script type='text/javascript' src='lib/parseThreatLevel.js'></script>
        <title>National Threat Level</title>
    </head>
    <body>
        <div id='nationalThreatLevel'></div>
    </body>
</html>

【问题讨论】:

    标签: javascript jquery html xml ajax


    【解决方案1】:

    出于安全原因,javascript 无法访问其他域。要绕过这一点,您需要在您的服务器上添加一个可以访问其他域的脚本 - 通常称为 代理

    PHP 是许多 Web 开发人员的绝佳选择。您要做的是将要访问的网站 url 发布到本地 PHP 脚本,然后它会请求该页面并将其内容返回到您的 jQuery 脚本,然后您可以解析您想要的数据。

    非 SO 解决方案:

    Stackoverflow 存档:

    【讨论】:

    • 谢谢!这非常有帮助。 :D 你不仅给出了解决方案,还帮助了​​像我这样的可怜的老新手学习。 ;)
    • "出于安全原因,javascript 无法访问其他域。"我想如果它可以访问,国家威胁级别会上升。 :-D(这整个“威胁级别”业务超出了我的范围......)
    【解决方案2】:

    您的所有代码都是正确的,但问题是您正在发出跨域请求。这将与 JavaScript / jQuery 一起工作的唯一方法是如果你能找到一个 JSONP 提供者。好吧,或者您编写自己的服务器端(PHP/ASP/ColdFusion/Something)来检索 XML 并提供本地副本以便能够使用 JavaScript 检索 XML。

    【讨论】:

      【解决方案3】:

      XML 区分大小写,不是吗?您可以尝试使用 THREAT_ADVISORY 和 CONDITION。也就是说,

      var threatLevel = $(xml).find('THREAT_ADVISORY').attr('CONDITION');
      

      【讨论】:

      • 虽然这本身并不能解决问题,但这是 Kerrick 代码的另一个问题。
      • 我已经尝试过更改大小写,我刚刚尝试过这个解决方案,所以这就是粘贴的内容。哎呀!
      猜你喜欢
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      • 2021-06-27
      • 2014-03-01
      • 2012-08-25
      • 1970-01-01
      • 2020-02-27
      • 2023-03-15
      相关资源
      最近更新 更多