【问题标题】:jquery, XML to HTMLjQuery,XML 到 HTML
【发布时间】:2010-02-10 14:02:07
【问题描述】:

我有一个问题,关于解析 xml。

我想获取一些 xml 数据到 HTML,但是我有一个问题,我可以从本地 xml 获取这些数据,当我尝试从外部 URL 获取数据时它不起作用,例如从

http://www.w3schools.com/XML/plant_catalog.xml

这是jquery:

<script type="text/javascript">
        $(document).ready(function(){
            $.ajax({
                type: "GET",
                url: "http://www.w3schools.com/XML/plant_catalog.xml",
                dataType: "xml",
                success: function(xml) {
                    $(xml).find('CATALOG').each(function(){
                        var title = $(this).find('BOTANICAL').text();
                        var url = $(this).find('BOTANICAL').text();
                        $('<div class="items" id="link_"></div>').html('<a href="'+url+'">'+title+'</a>').appendTo('#page-wrap');

                    });
                }
            });
        });
     </script>

和 HTML:

<div id="page-wrap">
        <h1>Reading XML with jQuery</h1>
     </div>

非常感谢!

【问题讨论】:

    标签: jquery html xml


    【解决方案1】:

    出于安全原因,您不能从不同域请求文件..

    引用http://api.jquery.com/jQuery.ajax/

    从远程服务器检索数据时(只能使用脚本或 jsonp 数据类型

    【讨论】:

    • 这意味着,我不能使用这种 url ,我必须使用类似 " url: "../site.xml" ?
    • 是的,只有您的域的本地网址。它可能是您域中的相对 URL,例如 url: '/somepath/somefile.xml'。相对 url(以 / 开头)从域根目录而不是当前文件夹开始
    【解决方案2】:

    您还可以使用服务器上的本地文件作为包装器来避免这些跨域问题。

    $.ajax({
      type: "GET",
      url: "catalog.php",
    ...
    

    本地目录.php

    <?php 
      header("Content-Type: text/xml");  
      echo file_get_contents("http://www.w3schools.com/XML/plant_catalog.xml"); 
    ?>
    

    请注意,您的服务器必须启用 url fopen 才能使其正常工作。

    【讨论】:

      猜你喜欢
      • 2011-11-13
      • 2012-07-21
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 2013-08-04
      相关资源
      最近更新 更多