无需重新加载页面的PHP AJAX排序数组

无需重新加载页面的PHP AJAX排序数组,php,jquery,ajax,arrays,sorting,Php,Jquery,Ajax,Arrays,Sorting,我有以下代码,它在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');

我有以下代码,它在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

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

退房。这至少能让你找到正确的方向。jQuery是一个Javascript库,完全可以用于您的目的。Javascript本身也可以完成这项任务,但是jQuery的目标是通过最小化所需的编码量来简化您的生活。您必须下载或引用标记中的jQuery库。如果您真的想开始使用jQuery,那么您肯定应该仔细阅读选择器及其使用方法

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

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

<a href='#' id='link'>Sort Data</a>
<div id='xmlData'>...DATA...</div>`
然后编写一个名为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 } ?>
退房。这至少能让你找到正确的方向。jQuery是一个Javascript库,完全可以用于您的目的。Javascript本身也可以完成这项任务,但是jQuery的目标是通过最小化所需的编码量来简化您的生活。您必须下载或引用标记中的jQuery库。如果您真的想开始使用jQuery,那么您肯定应该仔细阅读选择器及其使用方法

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

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

<a href='#' id='link'>Sort Data</a>
<div id='xmlData'>...DATA...</div>`
然后编写一个名为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 } ?>

您可以在页面上对其进行排序,而无需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>
然后调用。对数组进行排序。您将创建一个要传递给的自定义比较函数。排序:

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

listEl.append(cars);

演示:

您可以在页面上对其进行排序,而无需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>
然后调用。对数组进行排序。您将创建一个要传递给的自定义比较函数。排序:

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

listEl.append(cars);

演示:

既然你用jQuery标记了你的问题,你能在客户端添加排序吗?您的数据是否被放入表或列表中?我标记了jQuery,因为据我所知,它的AJAX和jQuery用于在不必重新加载页面的情况下完成页面上的事件。如果它是错误的,我将删除标签。数据位于PHP数组中,然后显示在html表中。我没有发布所有的HTML来保持文章的简洁。因为你用jQuery标记了你的问题,你能在客户端添加排序吗?您的数据是否被放入表或列表中?我标记了jQuery,因为据我所知,它的AJAX和jQuery用于在不必重新加载页面的情况下完成页面上的事件。如果它是错误的,我将删除标签。数据位于PHP数组中,然后显示在html表中。我没有发布所有的HTML是为了保持文章的简洁。谢谢,我会尝试一下,让你知道它是怎么回事。不过还有一个问题,我在“sort.php”中有多种排序方法。所以“sortMake”不是我唯一使用的。我需要多个类似于xmldata.php的页面吗?或者有没有办法从链接中获取xmldata.php中的值?$link.clickfunction{$.get'xmldata.php?sort=sortMake',functiond{$'xmldata.htmld;};我能在xmldata.php上$_GET['sort']吗?$.GET'xmldata.php',{sort:'sortMake'},函数{/*函数stuff*/};是的,你可以。是的,你应该完全使用jQuery。我听说Jon Skeet只用了6到8周就发明了。谢谢,我会尝试一下,让你知道它是怎么回事。不过还有一个问题,我在“sort.php”中有多种排序方法。所以“sortMake”不会
是我唯一使用的。我需要多个类似于xmldata.php的页面吗?或者有没有办法从链接中获取xmldata.php中的值?$link.clickfunction{$.get'xmldata.php?sort=sortMake',functiond{$'xmldata.htmld;};我能在xmldata.php上$_GET['sort']吗?$.GET'xmldata.php',{sort:'sortMake'},函数{/*函数stuff*/};是的,你可以。是的,你应该完全使用jQuery。我听说Jon Skeet只用了6到8周就发明了。我喜欢它。非常简单,工作做得很有效。我喜欢。非常简单,并且可以非常有效地完成工作。