AJAX在数组中加载更多行

时间:2013-04-01 17:07:27

标签: php jquery ajax

我必须承认我的AJAX技能很糟糕。我有一系列新闻。大约25行。我没有显示所有25行,而是将数组切成5的部分,并允许用户使用array_slice和一些ajax“加载更多”。 php端对我来说很容易,但我在使用ajax时遇到了一些麻烦。我尽我所能把它放在一起,但它还没有完全奏效。

AJAX:

<script type="text/javascript">
$(document).ready(function() {
            $('#load-more').click(function () {        

                var size = 5;

                var data = 'size=' + content.val() + '&submit=yes';
                $('.loading-circle').show();

                //start the ajax
                $.ajax({
                    url: "<?php echo $url; ?>/process/load.php",    
                    type: "GET",        
                    data: data,        
                    cache: false,
                    success: function (html) {                
                        if (html==1) {                    

                        } 
                        else {
                            alert("Sorry, an unnexpected error has occurred."); 
                        }              
                    }        
                });
                return false;
            });    
        });    
    </script>

load.php

<?php
session_start();

if ($_GET["submit"] == 'yes')
{
    $_SESSION["load_size"] = $_GET["size"];
}
?>

的index.php

$sorted = Feed::sortFeed($feed, $day, 0, $_SESSION["load_size"]);

foreach ($sorted as $article)           
    require $baseDir . 'feed.php';

所以我试图获取会话变量来确定大小。这种方法有几个问题虽然我不知道如何解决。每页可能有多个新闻源,即使用户只是想扩展一个,也会扩展。最重要的是,在页面刷新时,Feed不会调整为默认值5。我想我必须使用load.php页面生成数组,但我不知道如何通过ajax传回它。那么我最好如何使用ajax对数组进行排序呢?有什么我可以阅读的,或者我可以做一些简单的改变吗​​?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用PHP数组上的json_encode函数通过ajax传回PHP数组。只需在load.php

中回显json_encode的返回值
<?php
session_start();

if ($_GET["submit"] == 'yes')
{
    $_SESSION["load_size"] = $_GET["size"];
}

 //load some php array here
$array = array('success' => true, 'items' => array('item1','item2'));

echo json_encode($array);
?>

然后你可以通过指定dataType选项告诉jQuery返回类型是JSON:

$.ajax({
    url: "<?php echo $url; ?>/process/load.php",    
    type: "GET",        
    data: data,        
    cache: false,
    dataType: 'json',
    success: function (response) {                
      // response var is an object, same structure as the PHP array you encoded
      if(response.success){
        // handle success
      } else {
        alert('something went wrong');
      }
    }        
});