用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4266|回复: 16
收起左侧

[视图] 为什么我的load->view不加载页面,而是把页面内容加载到了浏览器的preview里?

[复制链接]
发表于 2018-6-21 20:55:53 | 显示全部楼层 |阅读模式
  1.         public function index(){
  2.                 $this->load->view('operlist/operlist_view.php');
  3.         }
复制代码


function login_success(){
    $.ajax({
        url:'operlist/operlist/index',
        type: 'POST'
    });
}
发表于 2018-6-22 11:57:38 | 显示全部楼层
本帖最后由 52lin 于 2018-6-22 11:58 编辑

你的ajax请求地址operlist/operlist/index,是上面的那个index方法吗?
如果是,ajax返回肯定是html代码,不会跳转的。

如果你是要异步显示html内容:
PHP复制代码
public function index(){
    $html = $this->load->view('operlist/operlist_view', '', true);
    $url = 'http://......';
    die(json_encode(array('url'=>$url, 'html'=>$html)));
}
复制代码

JS复制代码
function login_success(){
    $.ajax({
        url:'operlist/operlist/index',
        type: 'POST',
        dataType:'json',
        success:function(ret){
              // 显示html内容
              //$('#xxxx').html(ret.html);
              // 跳转地址
              location.href = ret.url;
        }
    });
}
复制代码





 楼主| 发表于 2018-6-25 19:20:04 | 显示全部楼层
本帖最后由 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,所以有些概念对我来说很陌生,导致现在总是踩坑。
发表于 2018-6-27 08:41:24 | 显示全部楼层
rkexy 发表于 2018-6-26 17:45
本意很简单……就想在JS中调用后端PHP的index函数,index函数中包括load->view函数,来达到跳转的目的。
...

你想要php跳转,请使用
PHP复制代码
复制代码


想要ajax后跳转,请在ajax的success里使用location.href跳转
JS复制代码
$.ajax({
    url:'xxxxx',
    dataType:'json',
    …
    success:function(ret){
        location.href='http://xxxxxx';
    }
});
复制代码
 楼主| 发表于 2018-6-21 20:56:33 | 显示全部楼层
前面的是control,后面的是js文件。
 楼主| 发表于 2018-6-21 21:07:14 | 显示全部楼层
啊啊啊,在线等……
发表于 2018-6-21 22:43:48 | 显示全部楼层
你的意思是什么?浏览器 preview 是什么?截图看看吧。

一般来说,浏览器的问题都跟 PHP 无关。
 楼主| 发表于 2018-6-22 00:21:23 CI中国手机版 | 显示全部楼层
Hex 发表于 2018-6-21 22:43
你的意思是什么?浏览器 preview 是什么?截图看看吧。

一般来说,浏览器的问题都跟 PHP 无关。

就是本应该跳转页面的,但是它没有,而是通过response的方式将整个页面的内容返回了。
发表于 2018-6-22 10:14:02 | 显示全部楼层
Ajax不支持CI的异步回调,$this->load->view('something');只支持直接调用控制器是进行view渲染。建议你登录成功后,使用js直接跳转。
 楼主| 发表于 2018-6-22 10:29:44 | 显示全部楼层
飘扬过海 发表于 2018-6-22 10:14
Ajax不支持CI的异步回调,$this->load->view('something');只支持直接调用控制器是进行view渲染。建议你登 ...

这就很蛋疼啊……所以,我通过了这种方式:
  1. function open_url(url){
  2.         window.location.href = url;
  3. }
复制代码


另外问一下,上面的这个是在本页面跳转。我怎么才能实现在新窗口跳转?
发表于 2018-6-22 20:05:33 | 显示全部楼层
rkexy 发表于 2018-6-22 10:29
这就很蛋疼啊……所以,我通过了这种方式:

目前还不太清楚你要做什么,建议说一下你的需求,然后给你一个合理的解决方案。问题都是可以解决的。
发表于 2018-6-25 14:25:46 | 显示全部楼层
rkexy 发表于 2018-6-22 10:29
这就很蛋疼啊……所以,我通过了这种方式:

不太明白为啥要在新页面跳转??

本版积分规则