0

当用户访问其中一个页面(我们称之为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,但它不起作用(仅限在线)。

4

2 回答 2

0

代替

文件:'模板/t_item_file'

给出控制器的完整路径

例如:“ http://www.yourdomain.com/---/templates/t_item_file

于 2013-05-20T11:14:59.727 回答
-1

问题解决了。我在 PHP 中加载 HTML 数据并将其传递给 JavaScript,然后使用 jQuery 为 DOM 元素设置动画。

以前,我没有传递 HTML,而是传递 PHP 数组中的原始数据,然后尝试通过 Ajax 获取该数组的所有元素的 HTML(只需一次调用即可获取所有元素的 HTML)。我认为请求中的参数太多,这可能是导致错误的原因。

于 2013-06-24T21:19:56.357 回答