使用PHP在单击时更改XML源

时间:2014-02-11 18:03:20

标签: php jquery xml

我有一个简单的新闻源,它从xml文件中提取,效果很好。新闻源每年分解为单独的XML文件。我希望该页面一次只显示一年,其中包含上述其他年份的链接。理想情况下,当点击新年时,我希望下面的内容无需更新页面即可更新。

我试图避免重复每年解析XML的PHP​​代码,而只想在用户点击不同年份时更新$ dom_object->加载源。

我是一名PHP新手,所以一些帮助将不胜感激!

    <?php
     $dom_object = new DOMDocument();
     $dom_object->load("http://EXAMPLE.com/XML-Feed-10100524539?year=2013");
     $item = $dom_object->getElementsByTagName("item");

     foreach( $item as $value )
     {
     $titles = $value->getElementsByTagName("title");
     $title  = $titles->item(0)->nodeValue;

     $pubDates = $value->getElementsByTagName("pubDate");
     $pubDate  = $pubDates->item(0)->nodeValue;

     $pdf_urls = $value->getElementsByTagName("pdf_url");
     $pdf_url  = $pdf_urls->item(0)->nodeValue;
     //Trims after last space - REMOVES EST
     $pubDate=substr($pubDate, 0, strrpos($pubDate, ' '));
     //Trims after remaining space - REMOVES TIME
     $pubDate=substr($pubDate, 0, strrpos($pubDate, ' '));
     $pubDater = str_replace('/', '-', $pubDate);
     $newDate = DateTime::createFromFormat("m/d/Y", $pubDate);
    $newDate = $newDate->format('F d, Y'); 



     echo "<div style=\"width:33%; float:left; display:inline-block; height:150px;\"><div style=\"padding:10px;\"><a href=\"$pdf_url\" target=\"_blank\" class=\"pdf news\"><h4>$newDate</h4><p>$title</p></a></div></div>";
     }
    ?>

1 个答案:

答案 0 :(得分:0)

您需要使用$.get$.post来使用ajax,以便执行以下操作:

$('#yourElement').click(function(){
    var path = $('#path'); // for example
    $.post("your/path/getXML.php", { path: path },
        function (dat) {
            console.log(dat);
        }
    );
});

getXML将是一个与此类似的文件:

$dom_object = new DOMDocument();
     $dom_object->load($_POST["path"]);
     $item = $dom_object->getElementsByTagName("item");

     foreach( $item as $value )
     {
     $titles = $value->getElementsByTagName("title");
     $title  = $titles->item(0)->nodeValue;

     $pubDates = $value->getElementsByTagName("pubDate");
     $pubDate  = $pubDates->item(0)->nodeValue;

     $pdf_urls = $value->getElementsByTagName("pdf_url");
     $pdf_url  = $pdf_urls->item(0)->nodeValue;
     //Trims after last space - REMOVES EST
     $pubDate=substr($pubDate, 0, strrpos($pubDate, ' '));
     //Trims after remaining space - REMOVES TIME
     $pubDate=substr($pubDate, 0, strrpos($pubDate, ' '));
     $pubDater = str_replace('/', '-', $pubDate);
     $newDate = DateTime::createFromFormat("m/d/Y", $pubDate);
    $newDate = $newDate->format('F d, Y'); 

    echo "<div style=\"width:33%; float:left; display:inline-block; height:150px;\"><div style=\"padding:10px;\"><a href=\"$pdf_url\" target=\"_blank\" class=\"pdf news\"><h4>$newDate</h4><p>$title</p></a></div></div>";