在ajax调用之后加载视图,CodeIgniter

时间:2013-03-01 18:38:32

标签: php ajax codeigniter controller

我有一个从javascript到控制器中的方法的ajax调用,控制器中的方法应该加载一个视图(比如,在屏幕上显示一个新页面),虽然一切似乎都没问题,但新视图却没有似乎加载在屏幕上。我不能使用header或windows.location,因为我传递的数组变量包含要在视图中使用的数据。

该页面显示在Chrome调试控制台的“网络”标签下(预览子标签,同时选择ajax)。但主屏幕保持不变。

如果某人遇到类似问题或有解决方案,请帮助我。

谢谢!

3 个答案:

答案 0 :(得分:10)

好的,这就是你做错了。

当您使用ajax请求页面时,它不会返回该页面。

当你使用$ this-> load-> view('pagename',$ datapassed);它会加载视图,这就是为什么你什么都看不见。

您需要做的是使用

$data=$this->load->view('pagename',$datapassed, TRUE);

它将会返回该页面并将其保存在$ data中 之后,您可以使用

进行打印
$this->set_output($data); 

并在ajax结果中接收并将其加载到div中。

如果您想刷新整个页面,可以使用

$(body).html(result);

您必须了解您需要通过在加载视图中提供第三个参数来发送html页面。

答案 1 :(得分:7)

在控制器类

function get_view_ajax()
{
   $data['username] = $_POST['username];
   $response = $this->load->view('radius/radius_corporate_graph',$data,TRUE);
   echo $response;
}

在您启动ajax调用的视图文件中

$('#button').click(function(){
var username = $('#username').val();

$.ajax({
   type:'POST',
   url:"<?php echo base_url(); ?>controller_name/get_view_ajax/",
   data: "username="+username,
   success:function(msg){
    $("#div_result").html(msg);
   },
   error: function(result)
   {
      $("#div_result").html("Error"); 
   },
   fail:(function(status) {
      $("#div_result").html("Fail");
   }),
   beforeSend:function(d){
    $('#div_result').html("<center><strong style='color:red'>Please Wait...<br><img height='25' width='120' src='<?php echo base_url();?>img/ajax-loader.gif' /></strong></center>");
   }

  }); 
});

<div id="div_result">
<a href="#" id="button">Click here </a>  

要在控制器函数(extra_info.php)上加载的另一个视图文件,如get_view_ajax函数所示

<h1>This page is called from ajax function </h1>

答案 2 :(得分:0)

请记住dataType必须是“html”

$.ajax({
        type: 'POST',
        url: '<?php echo base_url(); ?>/controllerName/functionName',
        dataType: "html",
        success: function (response) {
                   $("#oh").html(response);
                },
        error: function (error_) {
                    MYLOG(error_);
                }
       });