为什么我的load->view不加载页面,而是把页面内容加载到了浏览器的preview里?
public function index(){$this->load->view('operlist/operlist_view.php');
}
function login_success(){
$.ajax({
url:'operlist/operlist/index',
type: 'POST'
});
} 本帖最后由 52lin 于 2018-6-22 11:58 编辑
你的ajax请求地址operlist/operlist/index,是上面的那个index方法吗?
如果是,ajax返回肯定是html代码,不会跳转的。
如果你是要异步显示html内容:
public function index(){
$html = $this->load->view('operlist/operlist_view', '', true);
$url = 'http://......';
die(json_encode(array('url'=>$url, 'html'=>$html)));
}
function login_success(){
$.ajax({
url:'operlist/operlist/index',
type: 'POST',
dataType:'json',
success:function(ret){
// 显示html内容
//$('#xxxx').html(ret.html);
// 跳转地址
location.href = ret.url;
}
});
}
本帖最后由 rkexy 于 2018-6-25 19:23 编辑
Hex 发表于 2018-6-22 20:05
目前还不太清楚你要做什么,建议说一下你的需求,然后给你一个合理的解决方案。问题都是可以解决的。 ...
嗯……我就是将View中的HTML和JS分开来写了。显示用xxx.php(其实里面全是HTML代码);处理显示(比如多语言,动态生成等等)使用了JS文件,然后在HTML中引用JS。
现在,出现了这样的情况:我在JS中通过AJAX向PHP后台请求显示页面,也就是后台PHP调用$this->load->view(xxxx/xxxx);
正常来说,新页面在此时已经跳转了。但是现在出现的情况是,没有跳转,而是将需要显示的网页代码全部通过AJAX的response返回了.
我以前没做过WEB,所以有些概念对我来说很陌生,导致现在总是踩坑。
rkexy 发表于 2018-6-26 17:45
本意很简单……就想在JS中调用后端PHP的index函数,index函数中包括load->view函数,来达到跳转的目的。
...
你想要php跳转,请使用
header("location:http://login.xxx.com/success");
想要ajax后跳转,请在ajax的success里使用location.href跳转
$.ajax({
url:'xxxxx',
dataType:'json',
…
success:function(ret){
location.href='http://xxxxxx';
}
}); 前面的是control,后面的是js文件。 啊啊啊,在线等…… 你的意思是什么?浏览器 preview 是什么?截图看看吧。
一般来说,浏览器的问题都跟 PHP 无关。
Hex 发表于 2018-6-21 22:43
你的意思是什么?浏览器 preview 是什么?截图看看吧。
一般来说,浏览器的问题都跟 PHP 无关。
就是本应该跳转页面的,但是它没有,而是通过response的方式将整个页面的内容返回了。
Ajax不支持CI的异步回调,$this->load->view('something');只支持直接调用控制器是进行view渲染。建议你登录成功后,使用js直接跳转。 飘扬过海 发表于 2018-6-22 10:14
Ajax不支持CI的异步回调,$this->load->view('something');只支持直接调用控制器是进行view渲染。建议你登 ...
这就很蛋疼啊……所以,我通过了这种方式:
function open_url(url){
window.location.href = url;
}
另外问一下,上面的这个是在本页面跳转。我怎么才能实现在新窗口跳转? rkexy 发表于 2018-6-22 10:29
这就很蛋疼啊……所以,我通过了这种方式:
目前还不太清楚你要做什么,建议说一下你的需求,然后给你一个合理的解决方案。问题都是可以解决的。 rkexy 发表于 2018-6-22 10:29
这就很蛋疼啊……所以,我通过了这种方式:
不太明白为啥要在新页面跳转??
页:
[1]
2