0

ユーザーがいずれかのページ (ここではpage1とします) にアクセスすると、PHP はユーザーに関するデータを含む配列の HTML コンテンツを読み込みます。

ページが読み込まれたら (DOM の準備ができたら)、jQueryを使用してAJAX呼び出しを実行し、そのデータ配列の HTML を取得します。これは、個別の PHP テンプレート ファイルを使用する利点を得るために行います。このようにして、PHP は 2 次元配列内のすべての配列に対して PHP テンプレートを呼び出し、HTML を返します。

page1.php:

<script type="text/javascript">
    var globalArray = <?php echo json_encode($freres); ?>;

    jQuery(function($) {
        liste(); // Ajax call to get HTML for the data in "globalArray"
    });
</script>

AJAX 呼び出し:

function liste() {
    $.ajax({
        data : {
            array : globalArray,
            dataName : 'someName',
            file : 'templates/t_item_file'
        },
        dataType : 'html',
        success : function(data, textStatus, jqXHR) {
                var table = $('table');
                var rows = $('<table>' + data + '</table>').find('tr');

                rows.each(function(i, e) { // insert with fade-in animations
                    var row = $(e);

                    row.hide();
                    table.append(row);
                    row.delay(i * 15).fadeIn(250);
                });
        },
        type : 'GET',
        url : config.site + 'ajax/view' // configured in header
    });
}

t_header.phpのどこかに:

<script type="text/javascript">
    var config = {
        base : "<?php echo base_url(); ?>",
        site : "<?php echo site_url(); ?>"
    };
</script>

ajax/view/...にリダイレクトする構成ルート

$route['ajax/(:any)'] = 'c_ajax/$1';

AJAX 呼び出しを処理するコントローラー c_ajax のメソッド:

public function view() {
        $file = $this->input->get('file');
        $array = $this->input->get('array');
        $dataName = $this->input->get('dataName');

        foreach ($array as $vars) {
            $data[$dataName] = $vars;

            $this->load->view($file, $data);
        }
    }

ローカルホストでEasyPHPを使用してこれを行うと、すべて正常に動作し、次のような期待どおりの HTML を受け取ります。

<TR>
    <TD>...</TD>
    //...
</TR>
<TR>
//...

そして、それを に挿入しtableます。しかし、FireBug で自分の Web サイトで実行しようとすると、AJAX 応答が200ではなく302 Moved Temporarily.

jQuery と AJAX の学習にほぼ 4 日間を費やしましたが、うまくいきません (オンラインのみ)。

4

2 に答える 2

0

それ以外の

ファイル: 'templates/t_item_file'

コントローラーのフルパスを与える

例:" http://www.yourdomain.com/---/templates/t_item_file "

于 2013-05-20T11:14:59.727 に答える
-1

問題が解決しました。HTML データを PHP で読み込んで JavaScript に渡し、jQuery を使用して DOM 要素をアニメーション化します。

以前は、HTML ではなく生データを PHP 配列に渡し、Ajax を介して配列のすべての要素の HTML を取得しようとしました (1 回の呼び出しですべての要素の HTML)。リクエストのパラメータが多すぎて、それが原因でエラーが発生したと思います。

于 2013-06-24T21:19:56.357 に答える