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

[已解决] 【求助】为什么redirect失灵?出现“302 found”提示,没有跳转

[复制链接]
发表于 2012-5-11 13:34:26 | 显示全部楼层 |阅读模式
为前端的AJAX请求做了一个控制器,想处理完ajax请求直接在控制器里跳到另外一个网页,处理完请求调用redirect()函数,没能跳转到指定网址,以前试过PHP的header()函数也不行,用Firebug监视,报错:"302 Found",请问这是什么原因?
1、控制器确定load进来了url的helper
2、使用PHP的header函数报同样的错误
3、不是我指定的目标地址有错,因为让它跳到 http://www.baidu.com 也同样出错
发表于 2012-5-11 13:38:03 | 显示全部楼层
ajax请求重定向可以让网页跳转?
你要ajax跳转就得用js来跳转。
 楼主| 发表于 2012-5-11 13:44:30 | 显示全部楼层
jeongee 发表于 2012-5-11 13:38
ajax请求重定向可以让网页跳转?
你要ajax跳转就得用js来跳转。

我是根据AJAX请求的参数生成了一个链接,处理完链接想直接在控制器里面跳转到的这个链接,理论上header()跟redirect()能实现么?那该怎么做才能直接在控制器里面跳转啊?
JS的跳转会被浏览器拦截……
发表于 2012-5-11 13:47:23 | 显示全部楼层
甲鱼 发表于 2012-5-11 13:44
我是根据AJAX请求的参数生成了一个链接,处理完链接想直接在控制器里面跳转到的这个链接,理论上header() ...

你得仔细了解下ajax是什么东西,以及他的流程,被拦截,那就用js调用display为none的超链接的click方法。
 楼主| 发表于 2012-5-11 14:00:15 | 显示全部楼层
jeongee 发表于 2012-5-11 13:47
你得仔细了解下ajax是什么东西,以及他的流程,被拦截,那就用js调用display为none的超链接的click方法。 ...

谢了。
我这都是初学,就懂点儿皮毛。我接收到了AJAX请求的参数,也确定生成了正确的链接,现在就想能不能在控制器里直接跳转到这个链接……

您是说AJAX发送过来一个请求,我必须给它返回一个值嘛?(按照我上面的思路,跳转以后确实不能给AJAX请求返回值了)

如果按照您说的,我把生成的链接封装以后返回给前端,前端再用JS解析,然后JS跳转到指定链接,可能会慢点儿吧?
发表于 2012-5-11 20:52:16 | 显示全部楼层
甲鱼 发表于 2012-5-11 14:00
谢了。
我这都是初学,就懂点儿皮毛。我接收到了AJAX请求的参数,也确定生成了正确的链接,现在就想能不 ...

你这种需求是很少见的。
如果真是需要在ajax里跳转,最好的方式还是用js来实现。

你检查一下是否有滥用ajax的嫌疑,如果需要响应用户操作的话,这个操作直接链接到一个控制器,完成相应的业务,在通过redirect跳转,这是正常的流程。

你ajax把地址传到控制器里再跳转,ajax还在等待接收响应呢,能不能跳转还真是个问题。
 楼主| 发表于 2012-5-12 09:51:11 | 显示全部楼层
yuzhigang5460 发表于 2012-5-11 20:52
你这种需求是很少见的。
如果真是需要在ajax里跳转,最好的方式还是用js来实现。

哦~谢了!我好好检查一下
发表于 2012-5-13 17:06:22 | 显示全部楼层
AJAX和跳转没什么关系吧,AJAX只是负责取数据和传递数据,并不能负责跳转URL。
你如果想从 AJAX 取到数据后跳转,只有一条路就是用 window.location.href = 'xxx';
发表于 2012-5-13 18:39:23 | 显示全部楼层
处理完ajax请求直接在控制器里跳到另外一个网页,处理完请求调用redirect()函数

这样就会在后台经redirect后打开的网页当成ajax的返回的字符串内容返回给js。
ajax是只能接受文本内容的,你的跳转动作他会转化为跳转后打开的html内容返回给你。

本版积分规则