Codeigntier / AJAX - 致命错误:调用未定义的函数form_input()in

时间:2016-02-15 03:23:08

标签: javascript php jquery ajax codeigniter

我刚刚成功地让AJAX从数据库中获取数据并将其呈现给显示单击按钮时显示的div。但是当我在视图中读取包含php的第一行时,我得到了这个错误。

这是我的视图文件html

<div id="association-list-wrapper" class="list-wrapper">

        <?php echo form_input('filter', 'Filter by key, name, or location', array('class' => 'text-input filter', 'data-label-value' => 'Filter by key, name, or location')) ?>

        <section class="table-wrapper">

            <table id="association-list" class="filter-results">

                <tbody>

                    <?php foreach ($associations as $association): ?>

                    <tr id="<?php echo key($association)?>" class="result-row">

                        <td class="td col1"><p id=""><?php echo $association['AssociationKey'] ?></p></td>

                        <td class="td col2"><a href="<?php echo base_url('association/'.$association['AssociationKey']) ?>"><?php echo $association['Name'].' '.$association['Title'] ?></a></td>

                        <td class="td col3"><p><?php echo $association['City'].', '.$association['State'] ?></p></td>

                    </tr>

                    <?php endforeach ?>

                </tbody>

            </table>

        </section>

    </div>

这是我的JS:

$('li#page1').click(function(e){
    e.preventDefault();
    $('#pick-list').show();
    $('#association-pick-list').show();

    $.ajax({
        type: 'get',
        url: 'http://myapp.loc/association/pick-list',
        dataType: 'html',
        success: function (html) {
          $('#shadowbox').load('http://myapp.loc/application/views/association_management/pick_list.php');
        }
    });
    $('.shadowbox-wrapper').fadeIn(250);
    $('.shadowbox-window').fadeIn(250);
});

这是我的控制器:

public function pick_list()
{
    $this->load->helper('form');
    $data['associations'] = $this->association_model->get_all_associations();

    $this->load->view('association_management/pick_list', $data);
}

为什么它不会渲染页面?我测试了去触发控制器/方法的URL并且渲染得很好,但是当它使用AJAX呈现时,所有的php都会中断。

3 个答案:

答案 0 :(得分:1)

由于此

而发生错误
$('#shadowbox').load('http://myapp.loc/application/views/association_management/pick_list.php');

如果您像上面那样直接加载视图,那么来自Controller的数据将无法在视图页面中访问。所以我建议你从控制器获取数据并在你的视图上渲染。

您的控制器

public function pick_list()
{
    $this->load->helper('form');
    $associations = $this->association_model->get_all_associations();
    echo json_encode(['data'=>$associations]);

}

现在使用返回的数据渲染视图。

答案 1 :(得分:0)

试试这个,如果你没有,请问,我会帮助你

在视图页面

中使用此而不是form_input()
echo form_open('filter',  array('class' => 'text-input filter', 'data-label-value' => 'Filter by key, name, or location'));

在控制器中,也可以添加

$this->load->library('form_validation');

您视图中的一个错误 associations是您从控制器传递的数组名称。但你foreach是完成美元协会。使用$ association

为您的表单添加ID并在您的ajax中使用该ID 在视图中

 echo form_open('filter',  array('class' => 'text-input filter', 'data-label-value' => 'Filter by key, name, or location','id'=>'myform'));

答案 2 :(得分:0)

这个网址是对的吗?

  

url:'http://myapp.loc/association/pick-list',

还是喜欢这个?

  

URL: 'http://myapp.loc/association/pick_list',