ユーザーがいずれかのページ (ここでは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 日間を費やしましたが、うまくいきません (オンラインのみ)。