javascript - AJAX 无法在 codeigniter 中加载同一 DIV 中的页面

标签 javascript php jquery ajax codeigniter

我正在尝试在 codeigniter 中开发简单的 CMS。在主视图中,有几个指向其他页面的链接,但我希望所有页面都在指定 DIV 内的同一 View 中打开,而不需要为每个页面加载(AJAX 加载)。我尝试使用 AJAX 调用来实现此目的,但厌倦了弄清楚为什么它对我不起作用。每当我单击链接时,它只会从 Controller (即 LOGIN_VIEW)的索引方法加载 View 。 这是我的 cms View ,其中包含链接

<script type="text/javascript">
        function onLinkClick(value){
            alert('<?php echo base_url() ?>admin/load_view/'+value);
            $.ajax({    
                url: '<?php echo base_url() ?>admin/load_view/', 
                type: 'POST',
                 data: {'view_param': value},
                 success: function(response)
                 {
                     //$('#mang_server').html(response);
                    alert("response recieved");
                 }
            }); 
            alert('after response');    
        }
</script>

<body>
<div id="main">
    <div id="header"> <a href="" class="logo"><img src="../img/logo.gif" width="101" height="29" alt="" /></a>
        <div id="middle">
            <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="" onclick="onLinkClick('<?php echo $op_link ;?>')"><?php echo $op_name ;?></a></li>
                    <?php } ?>
                </ul>
                <div id="mang_server"> </div>

两个警报都正常工作...但是 ajax 调用困惑了。

这是我的 Controller 方法

public function index()
{
  if($this->session->userdata('admin_name'!='')){
    $this->data['title'] = "Admin Area";
    $this->data['ops'] = $this->admin_model->get_admin_ops();
    $this->load->view('admin_view.php',$data);
  } else {
    $data['title'] = "Admin login";
    $this->load->view('admin_login.php',$data);
  }    
}

public function load_view($view_name)
{      
   $data['view_link'] = $this->admin_model->load_view_model($view_name);
   $this->load->view($data);
}

请告诉我我犯了什么错误。

最佳答案

您的做法是错误的,请考虑以下通过ajax加载 View 的代码

Javascript部分:

 $.ajax({

             url: '<?php echo base_url() ?>admin/load_view/', 
             type: 'POST',
             dataType:'json',
             data: {'view_param': value},
             success: function(response)
             {

                $('#mang_server').html(response.html_view);

             }
 });

管理 Controller :

public function load_view($view_name){

  $data['view_link'] = $this->admin_model->load_view_model($view_name);

  // IF $data['view_link'] is the name of the view file you are trying to load
  $response['html_view']$this->load->view($data['view_link'],'',TRUE);
  // While loading a view in codeigniter it accepts three parameters
  // $this->load->view("name of the view file","data to be passed to the view or not","Returning views as data");
 // For more refer at the end of the page http://ellislab.com/codeigniter/user-guide/general/views.html
  echo json_encode($response);
}

关于javascript - AJAX 无法在 codeigniter 中加载同一 DIV 中的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22140657/

相关文章:

javascript - 根据操作验证表单

javascript - 从 Kendo Grid 数据源导出所有数据

javascript - 如何将javascript返回的值从 View 传递到laravel中的 Controller

javascript - 关闭 JavaScript 切换

PHP runkit_function_rename 不起作用?

php - 服务器是否可以专门阻止 curl 请求?

php - 在同一页面上激活实现 css 表单?

javascript - jQuery 插件 TableExport.js 中生成的奇怪字符

JQueryMobile 包装数据角色 ="content"div

javascript - 使用 css 在情感中嵌套