帮我解决我的ajax问题...好吧我想要做的是我在主视图中有一个侧栏导航面板..所有导航链接都是从database.now我想要的是什么时候我单击任何链接,它应该在相同的主视图中加载CI视图div,但在中间面板中,如果单击第二个链接,它应该用新的视图div替换旧的视图div而不加载页面。点击后要加载的Div将放入查看项目的文件夹(CI视图文件夹)。 现在我尝试的是当点击链接时我调用ajax,视图名称传递为URL(/ controller /方法),控制器加载视图,并且在ajax成功时,视图应该在中间面板中加载新的div。
查看代码:
脚本代码:
<script type="text/javascript">
$(document).ready(function(){
$("a.links").click(function(e){
e.preventDefault();
alert("alert on click");
var platform_id = $(this).attr('id');
alert(platform_id);
$.ajax({
url: '<?php echo base_url() ?>admin/load_view',
type: 'POST',
datatype:'json',
data: {'view_param': platform_id},
success: function(response)
{
if (response.success == 1)
{
alert('success');
}
else{
alert('unseccessful'); //just a alert to see if response is successful
}
},
error: function(response){
alert(response.message);
}
});
})
})
</script>
<div id="left-column">
<h3>Header</h3>
<ul class="nav">
<?php foreach($ops as $operations)
{$op_name = $operations['admin_op'];
$op_link = $operations['link_to'];
?>
<li><a href="" id="<?php echo $op_name ; ?>" class="links"><?php echo $op_name ;?></a></li>
<?php } ?>
</ul>
<a href="http://all-free-download.com/free-website-templates/" class="link">Link here</a> <a href="http://all-free-download.com/free-website-templates/" class="link">Link here</a>
</div>
中间小组div:
<div id="mang_server"> </div>
控制器代码:
public function load_view(){
$view_name = $this->input->post('view_param');
log_message('var dump', var_export($view_name));
$data['view_link'] = $this->admin_model->load_view_model($view_name);
$response['html_view'] = $this->load->view($data['view_link'],'',TRUE);
echo json_encode($response);
//$this->load->view($data);
}
我试图调试它也观察到它成为ajax的成功部分,但它警告其他部分。
错误部分提醒:
'Manage Servers'{"success":1,"message":"Some success message","html_view":"<table class=\"listing form\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n <th class=\"full\" colspan=\"2\">Header Here<\/th>\n <\/tr>\n <tr>\n <td class=\"first\" width=\"172\"><strong>Lorem Ipsum<\/strong><\/td>\n <td class=\"last\"><input type=\"text\" class=\"text\" \/><\/td>\n <\/tr>\n <tr class=\"bg\">\n <td class=\"first\"><strong>Lorem Ipsum<\/strong><\/td>\n <td class=\"last\"><input type=\"text\" class=\"text\" \/><\/td>\n <\/tr>\n <tr>\n <td class=\"first\"><strong>Lorem Ipsum<\/strong><\/td>\n <td class=\"last\"><input type=\"text\" class=\"text\" \/><\/td>\n <\/tr>\n <tr class=\"bg\">\n <td class=\"first\"><strong>Lorem Ipsum<\/strong><\/td>\n <td class=\"last\"><input type=\"text\" class=\"text\" \/><\/td>\n <\/tr>\n <\/table>\n <p> <\/p>"}
答案 0 :(得分:1)
在您的控制器中,您没有在前端分配 $response['success']
和 $response['message']
。将控制器代码更改为
public function load_view()
{
$view_name = $this->input->post('view_param');
log_message('var dump', var_export($view_name, true));
$data['view_link'] = $this->admin_model->load_view_model($view_name);
$response['success'] = 1;
$response['message'] = "Some success message";
$response['html_view'] = $this->load->view($data['view_link'],'',TRUE);
echo json_encode($response);
exit;
}
希望这会有所帮助:)
注意 log_message('var dump', var_export($view_name, true));
, var_export()
需要第二个参数才能返回该值。否则,它将输出文本并导致您的ajax响应出现问题。