0

私の 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';

そのため、セッション変数を取得してサイズを決定しようとしています。このアプローチにはいくつかの問題がありますが、回避方法がわかりません。ページごとに複数のニュース フィードが存在する場合があり、ユーザーが 1 つだけを展開したい場合でも、すべて展開されます。その上、フィードはページの更新時にデフォルトの 5 にサイズ変更されません。load.php ページで配列を生成する必要があると考えていますが、ajax を介して戻す方法がわかりません。では、ajax を使用して配列をソートするにはどうすればよいでしょうか。私が読むことができるもの、または私が加えることができるいくつかの簡単な変更はありますか?

ありがとう

4

1 に答える 1

0

json_encodePHP 配列で関数を使用して、PHP 配列を ajax 経由で戻すことができます。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次のようにオプションを指定することで、戻り値の型が JSON であることを jQuery に伝えることができます。

$.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 に答える