AJAX调用在本地服务器上工作但不在线

时间:2013-05-20 10:50:46

标签: javascript php jquery ajax

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

2 个答案:

答案 0 :(得分:0)

而不是

file:'templates / t_item_file'

给出控制器的完整路径

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

答案 1 :(得分:-1)

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

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