当用户访问其中一个页面(我们称之为page1)时,PHP 会为包含用户数据的数组加载 HTML 内容。
一旦页面被加载(DOM 就绪),我使用jQuery执行AJAX调用来检索该数据数组的 HTML。我这样做是为了获得使用单独的 PHP 模板文件的好处。这样,PHP 将为二维数组中的每个数组调用 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);
}
}
当我在 localhost 上使用EasyPHP执行此操作时,一切正常,并且我收到了预期的 HTML,例如:
<TR>
<TD>...</TD>
//...
</TR>
<TR>
//...
然后我将它插入到table
. 但是,当我尝试在 FireBug 中的网站上执行此操作时,我可以看到 AJAX 响应不是200
,而是302 Moved Temporarily
。
谁能帮我弄清楚该怎么做才能让它工作,因为我在过去的四天里几乎都在学习 jQuery 和 AJAX,但它不起作用(仅限在线)。