我有一个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
}
答案 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将消除在没有数据时使用表更新的容器。
希望这会有所帮助,欢呼:)