rkexy 发表于 2018-6-21 20:55:53

为什么我的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:57:38

本帖最后由 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: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,所以有些概念对我来说很陌生,导致现在总是踩坑。

52lin 发表于 2018-6-27 08:41:24

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';
    }
});

rkexy 发表于 2018-6-21 20:56:33

前面的是control,后面的是js文件。

rkexy 发表于 2018-6-21 21:07:14

啊啊啊,在线等……

Hex 发表于 2018-6-21 22:43:48

你的意思是什么?浏览器 preview 是什么?截图看看吧。

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

rkexy 发表于 2018-6-22 00:21:23

Hex 发表于 2018-6-21 22:43
你的意思是什么?浏览器 preview 是什么?截图看看吧。

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


就是本应该跳转页面的,但是它没有,而是通过response的方式将整个页面的内容返回了。

飘扬过海 发表于 2018-6-22 10:14:02

Ajax不支持CI的异步回调,$this->load->view('something');只支持直接调用控制器是进行view渲染。建议你登录成功后,使用js直接跳转。

rkexy 发表于 2018-6-22 10:29:44

飘扬过海 发表于 2018-6-22 10:14
Ajax不支持CI的异步回调,$this->load->view('something');只支持直接调用控制器是进行view渲染。建议你登 ...

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


另外问一下,上面的这个是在本页面跳转。我怎么才能实现在新窗口跳转?

Hex 发表于 2018-6-22 20:05:33

rkexy 发表于 2018-6-22 10:29
这就很蛋疼啊……所以,我通过了这种方式:




目前还不太清楚你要做什么,建议说一下你的需求,然后给你一个合理的解决方案。问题都是可以解决的。

飘扬过海 发表于 2018-6-25 14:25:46

rkexy 发表于 2018-6-22 10:29
这就很蛋疼啊……所以,我通过了这种方式:




不太明白为啥要在新页面跳转??
页: [1] 2
查看完整版本: 为什么我的load->view不加载页面,而是把页面内容加载到了浏览器的preview里?