javascript - AJAX POST 无法在 CODEIGNITER 中加载 div View

标签 javascript jquery ajax codeigniter

帮我解决我的ajax问题...好吧,我想做的是我在主视图中有一个侧栏导航面板..所有导航链接都是从数据库中获取的。现在我想要的是当我单击任何链接,它应该在同一主视图中但在中间面板中加载 CI View div,如果单击第二个链接,它应该用新 View div 替换旧 View div,而不加载页面。单击后要加载的 Div 放置在项目的views文件夹(CIviews文件夹)。 现在我尝试的是,当单击链接时,我调用ajax,并将 View 名称作为数据传递到URL(/ Controller /方法), Controller 加载 View ,并且在ajax成功时, View 应加载到中间面板中,如下所示新的 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>

Controller 代码:

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>&nbsp;<\/p>"}

最佳答案

在您的 Controller 中,您没有分配 $response['success']$response['message'] 你需要在前端。将 Controller 代码更改为,

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;
}

希望这有帮助:)

更新:

注意: in log_message('var dump', var_export($view_name, true));, var_export()需要第二个参数来返回值。否则,它将输出文本并导致您的 ajax 响应出现问题。

关于javascript - AJAX POST 无法在 CODEIGNITER 中加载 div View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22215674/

相关文章:

javascript - 使用 JavaScript 更新按钮上的文本

javascript - Jquery触发器提交在chrome中不起作用

javascript - 如何在普通 JS 函数中使用像 $.getJSON() 这样的 jQuery 函数?

javascript - jQuery 1.4 ajax 回调,html() 从响应中剥离外部 JS

javascript - 使用数据库时JQuery AJAX提交按钮无限期加载

javascript - 多站点不在一个站点上显示标题/导航

javascript - 广告转换系统的节奏算法

javascript - Raphael.js 中的火灾事件

javascript - 从网络摄像头录制视频流并将 blob 上传到服务器

javascript - 使用jquery连续循环从左到右的文本动画