0

我不得不承认我的 AJAX 技术很烂。我有一系列新闻。大约有 25 行。我想我不会显示所有 25 行,而是将数组分成 5 部分,并允许用户使用 array_slice 和一些 ajax 来“加载更多”。php 方面对我来说很容易,但我在使用 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>

加载.php

<?php
session_start();

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

索引.php

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

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

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

谢谢

4

1 回答 1

0

json_encode您可以使用 PHP 数组上的函数通过 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');
      }
    }        
});
于 2013-04-01T17:39:51.970 回答