6

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

该页面在 Chrome 调试控制台的网络选项卡(预览子选项卡,同时选择 ajax)下可见。但主屏幕保持原样。

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

谢谢!!

4

3 回答 3

13

好的,这就是你做错了什么。

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

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

你要做的就是使用

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

它会做的是,它将返回该页面并将其保存在 $data 之后,您可以使用打印它

$this->set_output($data); 

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

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

$(body).html(result);

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

于 2013-03-01T18:57:43.910 回答
11

在控制器类

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>  

在 get_view_ajax 函数中引用的控制器函数 (extra_info.php) 上要加载的另一个视图文件

<h1>This page is called from ajax function </h1>
于 2015-06-17T07:43:15.047 回答
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_);
                }
       });
于 2018-05-21T01:13:13.610 回答