我有一个从javascript到控制器中的方法的ajax调用,控制器中的方法应该加载一个视图(比如,在屏幕上显示一个新页面)似乎没问题,新的视图似乎没有加载到屏幕上。我不能使用header或windows.location,因为我传递了一个数组变量,其中包含要在视图中使用的数据。加载ajax调用后的视图,CodeIgniter
该页面在Chrome调试控制台的网络选项卡(预览子选项卡,同时选择ajax)下可见。但主屏幕保持原样。
如果有人遇到类似的问题或有解决方案,请帮助我。
谢谢!
我有一个从javascript到控制器中的方法的ajax调用,控制器中的方法应该加载一个视图(比如,在屏幕上显示一个新页面)似乎没问题,新的视图似乎没有加载到屏幕上。我不能使用header或windows.location,因为我传递了一个数组变量,其中包含要在视图中使用的数据。加载ajax调用后的视图,CodeIgniter
该页面在Chrome调试控制台的网络选项卡(预览子选项卡,同时选择ajax)下可见。但主屏幕保持原样。
如果有人遇到类似的问题或有解决方案,请帮助我。
谢谢!
好吧,这是你在做什么错了。
当您使用ajax请求页面时,它不会返回该页面。当您使用$ this-> load-> view('pagename',$ datapassed);当您使用$ this-> load-> view('pagename',$ datapassed)时,您可能会收到以下错误信息:
;它加载视图,这就是为什么你什么都看不到。
你所要做的是使用
$data=$this->load->view('pagename',$datapassed, TRUE);
它带给我们的是它会返回一个页面,并将其保存在$数据 之后,你可以用它打印
$this->set_output($data);
和在ajax结果中接收它并将其加载到div中。
,如果你想刷新整个页面,您可以使用
$(body).html(result);
你要明白,你需要通过提供负载认为,第三个参数发送html页面。
在控制器类
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功能refered
<h1>This page is called from ajax function </h1>
您是否正在尝试更改屏幕的全部内容或仅更改电子书中的内容换货? – Brendan 2013-03-01 18:44:54
我想改变整个内容,加载一个全新的视图 – Archer 2013-03-01 18:47:04
我不确定你为什么要使用ajax。你为什么不链接到控制器/方法? – Brendan 2013-03-01 21:35:18