【问题标题】:JQuery calling XML webserviceJQuery 调用 XML 网络服务
【发布时间】:2012-01-12 05:56:03
【问题描述】:

我正在尝试使用 web 服务练习 jquery,并调用他从美国机场打开的 xml 服务。

网络服务网址是http://services.faa.gov/airport/status/IAD?format=application/xml

和我的查询代码如下,但是当页面加载时它显示一个空屏幕:(有人可以指导我。我在网上搜索并无法弄清楚。

<html>
<head>
    <script type="text/javascript" src="assets/jquery.js"></script>
    <title>Aviation</title>
    <script type="text/javascript">
        $(document).ready(function () {
        $.ajax({
        type: "GET",
        url: "http://services.faa.gov/airport/status/IAD?format=application/xml",
        dataType: "xml",
        success: xmlParser
        });
    });

    function xmlParser(xml) {

        $('#airport').fadeOut();
        $(xml).find("AirportStatus").each(function () {
        $("#details").append($(this).find("ICAO").text() + "</br>"+ $(this).find("State").text());
        //$(".book").fadeIn(1000);
        });
    }
    </script>
</head>
<body>
    <p id="airport">Loading...</p>
    <p id="details"></p>
</body>
</html>

提前感谢您的宝贵时间。

【问题讨论】:

  • 请使用 mozilla 的 firebug 插件测试您的页面,特别是在 Net 面板的 XHR 选项卡下查看您的 Web 服务是否可访问。确保没有 500 内部服务器错误或 404 资源未找到异常不会出现。您的问题看起来很清楚,您的网络服务没有被调用
  • 我用萤火虫检查过。我对萤火虫也不太熟悉。但看到“响应”下没有任何内容,它是空的,但没有错误消息显示为错误或其他内容。
  • 按 ctrl+shift+k 在那里你会发现 NET 按钮看到下面是你的页面是否正在向 webservice 请求如果没有响应意味着你的脚本根本没有调用 webservice
  • 如果是跨域请求服务,那么您应该使用 jsonp 请求 jsonp 请求使用 $.json 函数notetodogself.blogspot.com/2009/02/… 这个链接可能对您有所帮助,但应该退出一个可用的 jsonp api您的网络服务提供商

标签: javascript jquery xml web-services


【解决方案1】:

CORS限制,您无法跨域访问数据,而且xml似乎有一些格式问题尝试使用json格式和dataType:'jsonp'

$.ajax({
        type: "GET",
        url: "http://services.faa.gov/airport/status/IAD?format=json",
        dataType: "jsonp",
    success: function(data){
        alert("asd");
    console.log(data);
    }
        });

http://jsfiddle.net/WxMXR/7/

【讨论】:

    【解决方案2】:

    我在http://jsfiddle.net/QYQ4V/2/执行你的js时出错

    因为不允许您使用 ajax 调用从其他域获取数据...(除非使用 JSONP 或脚本数据类型..) JSONP:http://en.wikipedia.org/wiki/JSONP

    这意味着您可以使用其他语言(python/ruby/java)来获取数据并使用 jquery 来获取同一域中的数据,而不是在 jQuery 中使用 XHR($.ajax)。

    【讨论】:

      【解决方案3】:

      仅供参考

      服务器端返回 xml 和响应 http 头 'Content-Type'='application/xml' 应该是 'text/xml',

      和使用'application/xml'的低级XMLHttpRequest,这样就发生了冲突。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-05
        • 1970-01-01
        • 1970-01-01
        • 2016-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多