我刚刚成功地让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都会中断。
答案 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)
这个网址是对的吗?
还是喜欢这个?