在listview jquerymobile上通过jquery解析XML

时间:2014-05-30 07:53:03

标签: jquery xml html5 xml-parsing jquery-mobile-listview

我想用jquery和jquerymobile在列表中显示来自XMl的数据。我在这里看到很多samy topcis,但它对我没有帮助。所以我会告诉你我已经完成的代码,有些人可以告诉我,我做错了。

这是我的Xml(名为emertimi.xml,位于root上):

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Row>
        <Emri>Abide</Emri>
        <Kuptimi>Adhuruese</Kuptimi>
        <Gjinia>Femer</Gjinia>
    </Row>
    <Row>
        <Emri>Abire</Emri>
        <Kuptimi>Aromë e mirë lulesh.</Kuptimi>
        <Gjinia>Femer</Gjinia>
    </Row>
    <Row>
        <Emri>Adhra</Emri>
        <Kuptimi>Margaritarë i pashpuar</Kuptimi>
        <Gjinia>Femer</Gjinia>
    </Row>
    <Row>
        <Emri>Adile</Emri>
        <Kuptimi>E drejtë</Kuptimi>
        <Gjinia>Femer</Gjinia>
    </Row>
    <Row>
        <Emri>Afife</Emri>
        <Kuptimi>E pastër; E thjeshtë; E lehtë</Kuptimi>
        <Gjinia>Femer</Gjinia>
    </Row>
</Root>

这是我的html和jquery

<html>
<!DOCTYPE html>
<head>
    <title>..:Emra per femije:..</title>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css"  href="site.css">
    <link href='http://fonts.googleapis.com/css?family=Roboto:400,100,300,100italic,300italic,500,400italic,500italic,700italic,700,900,900italic' rel='stylesheet' type='text/css'>
    <meta name="viewport" content="widdiv=device-widdiv, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
    <script type="text/javascript" src="main.js"></script>  
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>
<script type="text/javascript">
    $(document).ready(function()
        {
          $.ajax({
            type: "GET",
            url: "emertimi.xml",
            dataType: "xml",
            success: parseXml
          });
        });

        function parseXml(xml)
        {
          $("#menu_meshkujt").html("<ul id='content' data-role='listview' data-inset='true'></ul>");
          $(xml).find("Row").each(function()
          {
            $("#content").append("<li><a href='"+$(this).find("Emri").text()+"'><h2>"+$(this).find("Kuptimi").text()+"</h2><p>"+$(this).find("Gjinia").text()+"</p></a></li>");
          });  
        }
</script>
 </head>
<body>
<div id="meshkujt_wrapper" data-role="page">
<div id="menu_meshkujt" >


        </div>
</div>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

我使用你的代码更改url从我的本地apache下载xml并在chrome上运行正常:

chrome execution

也许您的问题是服务器调用,而不是按预期返回XML。在ajax调用中添加错误函数定义以检查是否发生了错误:

$(document).ready(function()
    {
      $.ajax({
        type: "GET",
        url: "emertimi.xml",
        dataType: "xml",
        success: parseXml,
        error : function(jqXHR, textStatus, errorThrown){
            alert(textStatus);
            alert(errorThrown);
        }
      });
    });

编辑:

我刚刚意识到您正在尝试从本地文件加载XML,但由于安全性要求,某些浏览器不允许这样做。如果您想尝试使用chrome,可以禁用chrome websecurity。为此,请尝试从命令行使用--disable-web-security属性启动chrome(在开始之前,确保没有运行chrome实例,如果不是disable-web-security不起作用):

"C:\...\Google\Chrome\Application\chrome.exe" --disable-web-security

我检查您的代码并禁用它在本地文件中运行的Chrome网络安全,还记得在您的ajax调用中指定url:"file:///your_path"

使用--disable-web-security属性正确启动chrome时,您必须看到黄色警告:

chrome with disable web security

希望这有帮助,