1

我有以下代码对 XML 文件运行查询并返回结果。然后我使用 usort 对其进行排序。(我的排序功能在单独的页面 sort.php 上)。我现在已经注释掉了 usort,但是 usort 函数可以按预期工作。

$xml = simplexml_load_file($url);

//RUN QUERY ON XML
$xQuery = $xml->xpath($query);

//DISPLAY RESULTS OF QUERY

$i = 0;
//usort($xQuery, 'sortMake');
    for ($f = 0; $f <= 9; $f++) {               
        ?>
            <img src= "<?php echo $xQuery[$i]->MainPhoto;?>"><br />
            MAKE:  <?php echo $xQuery[$i]->Make;?><br />
            Model: <?php echo $xQuery[$i]->Model;?><br />
            $i++;


    <?php } ?>

所以上面的代码会显示所有未排序的内容。我想在循环之前有一个排序链接,单击该链接会对数组进行排序并显示它,而无需重新加载整个页面。我知道它可能与 AJAX 有关,但我发现的所有 AJAX 资源都是使用 MySQL 的函数的示例。我没有使用 MySQL。

任何帮助,将不胜感激。谢谢。

4

2 回答 2

3

您可以在页面上对其进行排序,无需 AJAX 或 PHP 排序。您需要稍微修改您的 HTML。将结果放在具有 id 的父元素中。将每个结果放在一个带有类的 div 中。将要排序的数据放在一个类中:

<div id="carList">
    <div class="car">
        <img src= "<?php echo $xQuery[$i]->MainPhoto;?>"><br />
        MAKE:  <span class="make"><?php echo $xQuery[$i]->Make;?></span><br />
        Model: <span class="model"><?php echo $xQuery[$i]->Model;?></span><br />
        $i++;
    </div>
    ...
</div>

要对元素进行排序,首先将它们放入Array

var listEl = $("#carList");
var cars = listEl.children(".car").get();

然后调用.sort()你的Array. 您将创建一个自定义比较函数以传递给.sort()

cars.sort(function (a, b) {
    var aMake = $(a).find(".make").text();
    var bMake = $(b).find(".make").text();
    return a - b;
});

现在,只需将元素附加回父元素:

listEl.append(cars);

演示:http: //jsfiddle.net/gilly3/ZNmEh/

于 2012-06-08T20:24:41.557 回答
1

查看jQuery 的 .get() 函数。这至少应该让你指出正确的方向。jQuery 是一个 Javascript 库,绝对可以用于您的目的。单独的 Javascript 也可以完成这项任务,但是 jQuery 的目标是通过最小化你必须做的编码量来简化你的生活。您必须下载或引用<head>标签中的 jQuery 库。如果您真的想开始使用 jQuery,您绝对应该阅读选择器以及如何使用它们。

我个人喜欢 jQuery 并且使用过其他几个库。我发现 jQuery 非常适合初学者,而且在线文档也很棒。它拥有庞大的用户群,可以为您回答任何和所有问题。

基本上,您需要将显示的数据包装在 jQuery 能够找到的标签中,即:

<a href='#' id='link'>Sort Data</a>
<div id='xmlData'>...DATA...</div>`

然后有你的脚本:

$("#link").click(function(){
    $.get('xmldata.php',function(d){
        $('#xmlData').html(d);
    });
});

然后有一个标题xmldata.php为内容的脚本:

$xml = simplexml_load_file($url);

//RUN QUERY ON XML
$xQuery = $xml->xpath($query);

//DISPLAY RESULTS OF QUERY

$i = 0;
usort($xQuery, 'sortMake');
for ($f = 0; $f <= 9; $f++) {               
    ?>
        <img src= "<?php echo $xQuery[$i]->MainPhoto;?>"><br />
        MAKE:  <?php echo $xQuery[$i]->Make;?><br />
        Model: <?php echo $xQuery[$i]->Model;?><br />
        $i++;
<?php } ?>
于 2012-06-08T18:52:51.063 回答