php - 如何修复我的 ajax 解析器,使其显示我想要显示的所有节点
问题描述
我一直在尝试将这个 xml 数据处理成 div 我已经将它管理到一定程度,但它只会显示第一个值,不确定为什么,并且任何帮助都会得到很大的帮助
我已经按照一些教程从 XML 文件中提取数据,但无法显示一个值
<!DOCTYPE html>
<html>
<head>
<title>Movies</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$.ajax({
type: "GET",
url: "movies.xml",
dataType: "xml",
success: function(data) {
$(data).find('dates').each(function() {
var movies = $(this).find('film').attr('name');
var time = $(this).find('session').attr('time');
$('.container').append( movies + ' <br> ' + time );
})
},
error: function() {
$('.container').text('Failed to get feed');
}
});
</script>
</head>
<body>
<div class="container">
</div>
</body>
</html>
<?xml version="1.0" ?>
<!-- Version 8.216 (Build 8216) -->
<!-- INTERNET FTP Sessions (Extended - Sort By Date) -->
<!-- Sessions for 3 February 2019-->
<ROOT guid="{E8AFA1E2-B92A-4590-8049-50EE083899B0}" versionNo="8216" releaseNo="45577" dateCreated="3 February 2019" timeCreated="12:16 pm" dateFrom="3 February 2019" dateTo="3 February 2019" >
<site siteNo="9200" siteName="Starlight Cinema Centre" timeFormat="h:mm am/pm" >
<movies>
<cinemas>
<cinema cinemaNo="1" name="CINEMA 1" cinemaID="1" cinemaTypeNo="0" />
<cinema cinemaNo="2" name="CINEMA 2" cinemaID="2" cinemaTypeNo="0" />
<cinema cinemaNo="3" name="CINEMA 3" cinemaID="3" cinemaTypeNo="0" />
<cinema cinemaNo="4" name="CINEMA 4" cinemaID="4" cinemaTypeNo="0" />
<cinema cinemaNo="5" name="CINEMA 5" cinemaID="5" cinemaTypeNo="0" />
<cinema cinemaNo="6" name="The Lounge" cinemaID="6" cinemaTypeNo="1" />
</cinemas>
<dates>
<date asInteger="20190203" asText="3 February 2019">
<film filmNo="3326" name="AQUAMAN (LD)" duration="2 hrs 40 mins" rating="M" >
<cinemaType cinemaTypeNo="0" name="Cinema" >
<sessions filmNo="3326">
<session time="1:15 pm" cinemaNo="5" />
<session time="6:40 pm" cinemaNo="5" />
</sessions>
</cinemaType>
</film>
<film filmNo="3337" name="DRAGON BALL SUPER: BROLY" duration="2 hrs" rating="PG" >
<cinemaType cinemaTypeNo="0" name="Cinema" >
<sessions filmNo="3337">
<session time="1:40 pm" cinemaNo="1" />
<session time="6:40 pm" cinemaNo="5" />
</sessions>
</cinemaType>
</film>
<film filmNo="3334" name="GLASS (LD)" duration="2 hrs 25 mins" rating="M" >
<cinemaType cinemaTypeNo="0" name="Cinema" >
<sessions filmNo="3334">
<session time="11:00 am" cinemaNo="1" />
<session time="6:20 pm" cinemaNo="3" />
</sessions>
</cinemaType>
</film>
</date>
</dates>
</movies>
</site>
</ROOT>
<!-- End File -->
需要它来显示所有电影和时间,但它只显示一个像它只显示 AQUAMAN (LD) 下午 1:15
谢谢你的帮助
解决方案
你只有一个dates
元素,所以你的循环只执行一次。您真正想要做的是迭代film
元素:
success: function(data) {
$(data).find('film').each(function() {
var movies = $(this).attr('name');
var time = $(this).find('session').attr('time');
$('.container').append( movies + ' <br> ' + time );
})
},
如果要显示按日期分组的电影,则需要有一个嵌套循环,例如:
success: function(data) {
$(data).find('date').each(function() {
var date = $(this).attr('asText');
$('.container').append(date + '<br>');
$(this).find('film').each(function() {
var movies = $(this).attr('name');
$('.container').append( movies + ' <br> ' );
$(this).find('session').each(function () {
var time = $(this).attr('time');
$('.container').append( time + ' <br> ' );
})
})
})
},
推荐阅读
- java - 验证约束不适用于字符串列表
- python - 获取日期 obj 作为当天 Python 的百分比
- android - 什么 hms 资源值-zz 以及如何删除它?
- javascript - React Native formik 在 formik 之外使用 handleSubmit 和 useRef
- c# - 如何在创建项目后延迟 25 秒删除项目?
- flutter - 我有一个 covid 跟踪应用程序,我想每天发送有关新病例的通知。即使应用程序在颤动中关闭,我怎么能做到这一点
- javascript - 现有集合的猫鼬自动增量
- azure - 我们可以通过在 ARM 模板中传递 vnet id 将 vnet 集成到 azure 容器注册表吗?
- docker - 如何使用在我的 Dockerfile 中保存为 tar 文件的 docker 图像作为父图像
- dataframe - 将 spark df 转换为后续对的 df