如果找不到数据,则JQuery显示错误

时间:2015-05-30 17:18:46

标签: jquery ajax xml

我有一个JQuery语法来从XML文件中获取数据并将其放在表中。一切正常,但当我尝试从XML中删除所有数据时,错误消息不会显示。我想知道为什么!?

$(document).ready(
    function()
        {
            $.ajax(
                {
                    type    : "GET",
                    url     : "xml/london.xml", 
                    dataType: "xml",
                    success : xmlParser 
                }
            ); // end ajax

            $('#container').html("<tr><td>NAME</td><td>LATITUDE</td><td>LONGITUDE</td><td>GEOMETRY ID</td><td>CONTRY CODE</td><td>CONTRY NAME</td><td>FCL</td><td>F-CODE</td></tr>");
        }); // end ready

function xmlParser(xml){
    $(xml).find("geoname").each(

        function()
            {   
                var tName = $(this).find("name").text();
                var tLat = $(this).find("lat").text();
                var tLng = $(this).find("lng").text();
                var tgeonameID = $(this).find("geonameId").text();
                var tCountryCode = $(this).find("countryCode").text();
                var tCountryName = $(this).find("countryName").text(); 
                var tfct = $(this).find("fcl").text();
                var tfCode = $(this).find("fcode").text();

                $('#container').append("<tr><td class='PL10 txtBold'>" + tName + "</td><td class='PL10'>" + tLat + "</td><td class='PL10'>" + tLng + "</td><td class='txtCenter'>" + tgeonameID + "</td><td class='txtCenter'>"+ tCountryCode + "</td><td class='PL10'>" + tCountryName + "</td><td class='PL10'>" + tfct + "</td><td class='PL10'>" + tfCode + "</td></td></tr>");
            }
        );  // end each
}

1 个答案:

答案 0 :(得分:0)

在您的代码中,当返回数据的长度为0时,您将调用alert('No data found!');,这只会显示一条消息。

如果您希望更新视图,则需要将数据添加到html中。在您的代码示例中,看起来div #container用于显示数据,因此对代码进行以下更改

$(document).ready(
    function()
    {
        $.ajax(
            {
                type    : "GET",
                url     : "xml/london.xml", 
                dataType: "xml",
                success : function(xml){
                    if (xml === null || xml.length == 0){
                        $('#container').html('NO DATA FOUND');

                    }
                    else {
                        $('#container').html("<tr><td>NAME</td><td>LATITUDE</td><td>LONGITUDE</td><td>GEOMETRY ID</td><td>CONTRY CODE</td><td>CONTRY NAME</td><td>FCL</td><td>F-CODE</td></tr>");
                        xmlParser(xml);
                    }
                }
            }
        ); // end ajax


}); // end ready

function xmlParser(xml){
    $(xml).find("geoname").each(

        function()
            {   
                var tName = $(this).find("name").text();
                var tLat = $(this).find("lat").text();
                var tLng = $(this).find("lng").text();
                var tgeonameID = $(this).find("geonameId").text();
                var tCountryCode = $(this).find("countryCode").text();
                var tCountryName = $(this).find("countryName").text(); 
                var tfct = $(this).find("fcl").text();
                var tfCode = $(this).find("fcode").text();

                $('#container').append("<tr><td class='PL10 txtBold'>" + tName + "</td><td class='PL10'>" + tLat + "</td><td class='PL10'>" + tLng + "</td><td class='txtCenter'>" + tgeonameID + "</td><td class='txtCenter'>"+ tCountryCode + "</td><td class='PL10'>" + tCountryName + "</td><td class='PL10'>" + tfct + "</td><td class='PL10'>" + tfCode + "</td></td></tr>");
            }
        );  // end each
}

alert('No data found!');替换$('#container').html('NO DATA FOUND');应更新您的容器,而不是通过消息提醒您。

将代码位$('#container').html("<tr><td>NAME</td><td>LATITUDE</td><td>LONGITUDE</td><td>GEOMETRY ID</td><td>CONTRY CODE</td><td>CONTRY NAME</td><td>FCL</td><td>F-CODE</td></tr>");移动到else将消除在没有数据时使用表更新的容器。

希望这会有所帮助,欢呼:)