当用户访问其中一个页面时(让我们称之为 page1 ),PHP会为包含用户数据的数组加载HTML内容。
加载页面(DOM就绪)后,我使用 jQuery 执行 AJAX 调用,以检索该数据数组的HTML。我这样做是为了获得使用单独的PHP模板文件的好处。通过这种方式,PHP将为bi-dimensionnal数组中的每个数组调用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,但它不起作用(仅限在线)。
答案 0 :(得分:0)
而不是
file:'templates / t_item_file'
给出控制器的完整路径
答案 1 :(得分:-1)
问题解决了。我在PHP中加载HTML数据并将其传递给JavaScript,然后使用jQuery为DOM Elements设置动画。
以前,我没有在PHP数组中传递HTML而是原始数据,然后尝试通过Ajax获取该数组的所有元素的HTML(仅一次调用中的所有元素的HTML)。我认为请求中有太多参数,这可能是错误导致的。