使用JQuery/AJAX在WordPress中显示XML内容
我一直在使用以下脚本的变体从日历的XML提要中提取事件信息,并将其显示在html页面中:使用JQuery/AJAX在WordPress中显示XML内容,jquery,ajax,wordpress,xml-parsing,Jquery,Ajax,Wordpress,Xml Parsing,我一直在使用以下脚本的变体从日历的XML提要中提取事件信息,并将其显示在html页面中: $(document).ready(function () { $.ajax({ type: "GET", url: "../../../evanced/lib/eventsxml.asp?dm=exml&nd=14&fe=1&alltime=1", dataType: "xml", success: xmlPa
$(document).ready(function () {
$.ajax({
type: "GET",
url: "../../../evanced/lib/eventsxml.asp?dm=exml&nd=14&fe=1&alltime=1",
dataType: "xml",
success: xmlParserFeatured,
error: function(){alert("We're sorry. Something didn't load correctly.");}
});
});
function xmlParserFeatured(xml) {
$(xml).find("item").each(function () {
var xml_image = $(this).find('imagepath').text();
var xml_imagetext = $(this).find('imagetext').text();
var xml_title = $(this).find('title').text();
var xml_date = $(this).find('date').text();
var xml_time = $(this).find('time').text();
var xml_endtime = $(this).find('endtime').text();
var xml_location = $(this).find('location').text();
var xml_link = $(this).find('link').text();
var xml_description = $(this).find('description').text();
var xml_signup = $(this).find('signup').text();
var xml_eventtype = $(this).find('prieventtype').text();
var hasImage = xml_image != "" && xml_image != "";
var hasDate = xml_date != "";
var noEndTime = xml_time != "" && xml_endtime == "";
var hasEndTime = xml_time != "" && xml_endtime != "";
var hasLink = xml_link != "";
var hasDescription = xml_description != "";
var hasLocation = xml_location != "";
var hasSignUp = xml_signup == "1";
var eventType = xml_eventtype == "Outreach" || xml_eventtype == "Teen" || xml_eventtype == "Youth";
var content = ((eventType) ? "<div class='article " + xml_eventtype + "'>" : "<div class='article Adult'>") +
((hasImage) ? "<img class='article' src='" + xml_image + "' alt='" + xml_imagetext + "' />" : "")
+ "<p class='article_heading'>" + ((hasLink) ? "<a href='" + xml_link + "'>" + xml_title + "</a></p>" : "<p class='article_heading'>" + xml_title + "</p>")
+ "<p class='article_subheading'>" + xml_date + ((hasEndTime) ? " from " + xml_time + " to " + xml_endtime : "") + ((noEndTime) ? " at " + xml_time : "") + ((hasLocation) ? "<br />Location: " + xml_location + "</p>" : "")
+ ((hasDescription) ? "<p>" + xml_description + "</p>" : "")
+ ((hasSignUp) ? "<p><a href='" + xml_link + "'>Register Online</a>.</p>" : "")
+ "<div style='clear: both; height: 1px;'></div></div>";
$(".event_list").append(content);
});}
$(文档).ready(函数(){
$.ajax({
键入:“获取”,
url:“../../../evanced/lib/eventsxml.asp?dm=exml&nd=14&fe=1&alltime=1”,
数据类型:“xml”,
成功:xmlParserFeatured,
错误:函数()
});
});
函数xmlParserFeatured(xml){
$(xml).find(“item”).each(函数(){
var xml_image=$(this).find('imagepath').text();
var xml_imagetext=$(this.find('imagetext').text();
var xml_title=$(this).find('title').text();
var xml_date=$(this).find('date').text();
var xml_time=$(this.find('time').text();
var xml_endtime=$(this.find('endtime').text();
var xml_location=$(this).find('location').text();
var xml_link=$(this).find('link').text();
var xml_description=$(this).find('description').text();
var xml_signup=$(this.find('signup').text();
var xml_eventtype=$(this.find('prieventtype').text();
var hasImage=xml_image!=“”&xml_image!=“”;
var hasDate=xml_date!=“”;
var noEndTime=xml_-time!=“”&xml_-endtime=“”;
var hasEndTime=xml_-time!=“”&xml_-endtime!=“”;
var hasLink=xml_link!=“”;
var hassdescription=xml_description!=“”;
var hasLocation=xml_位置!=“”;
var hasSignUp=xml\u signup==“1”;
var eventType=xml_eventType==“外展”| | xml_eventType==“青少年”| | xml_eventType==“青少年”;
变量内容=((事件类型)?“”:“”)+
((hasImage)?“”:“”)
+“”+((hasLink)?“
”:“”+xml\u title+”
”)
+“”+xml\u date+((hasEndTime)?“从”+xml\u time+“到”+xml\u endtime:)+((noEndTime)?“在”+xml\u time:)+((hasLocation)?“
位置:“+xml\u Location+”
:”)
+((hassdescription)?“”+xml\u description+”“:”)
+((hasSignUp)?“”:“”)
+ "";
$(“.event_list”)。追加(内容);
});}
我们正在将我们的网站迁移到WordPress,但我还没能在任何WP页面上实现这一点。我的问题是a.)这是否可以在WordPress中使用,b.)是否有其他/不同/更好的方法在WordPress中获得相同的结果?我在网上找到的大部分内容都讨论了将XML提要作为博客文章导入,这不是我想要的。首先,您是否尝试过XSL将XML转换为HTML 无论如何,它是一个JavaScript解决方案,所以它与服务器端的Wordpress无关 1) 您确定Wordpress创建的HTML文档中至少有一个元素具有“事件列表”类吗?这似乎不是一个标准的WP类,也许你忘记了
2) 您是否在移动中更改了站点的域?由一个域提供服务的JavaScript有时无法向其他域发送请求。最终放弃了这一点,转而采用更简单的解决方案。决定只使用需要填充的节点,改为使用php解决方案
<?php
$url = "/evanced/lib/eventsxml.asp?dm=exml&nd=7&fe=1&alltime=1";
$xml = simplexml_load_file($url);
foreach($xml->item as$item)
{
echo "<div class='main-cal-event main-cal-event-".$item->prieventtype."'>";
echo "<p><span class='event-title'><a href='".$item->link."'>".$item->title."</a></span><br />";
echo "<span class='event-date'>".$item->date." from ".$item->time." to ".$item->endtime."</span><br />";
echo "<span class='event-desc'>".$item->description."</span></p>";
echo "<div class='fix'></div>";
echo "</div>";
}
?>
我没有尝试过XSL,对它知之甚少。这是否允许我只显示提要中选定的节点,而忽略这些节点为空时的编码?并非所有事件都有结束时间/注册链接等。对于event_list类,我手动将其插入到我的子主题中的模板中。它显示在源代码中,我的转义显示在JS关闭的情况下。当我将其编码到页面内容时也是如此。WP安装是与日历位于同一服务器上的文件夹,但我怀疑WP可能找不到xml链接。我所有的URL变体都失败了。我甚至尝试创建一个小样本xml文档,并将其包含在与上述脚本相同的文件夹中。