甲鱼 发表于 2012-5-11 13:34:26

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

为前端的AJAX请求做了一个控制器,想处理完ajax请求直接在控制器里跳到另外一个网页,处理完请求调用redirect()函数,没能跳转到指定网址,以前试过PHP的header()函数也不行,用Firebug监视,报错:"302 Found",请问这是什么原因?
1、控制器确定load进来了url的helper
2、使用PHP的header函数报同样的错误
3、不是我指定的目标地址有错,因为让它跳到 http://www.baidu.com 也同样出错

jeongee 发表于 2012-5-11 13:38:03

ajax请求重定向可以让网页跳转?
你要ajax跳转就得用js来跳转。

甲鱼 发表于 2012-5-11 13:44:30

jeongee 发表于 2012-5-11 13:38 static/image/common/back.gif
ajax请求重定向可以让网页跳转?
你要ajax跳转就得用js来跳转。

我是根据AJAX请求的参数生成了一个链接,处理完链接想直接在控制器里面跳转到的这个链接,理论上header()跟redirect()能实现么?那该怎么做才能直接在控制器里面跳转啊?
JS的跳转会被浏览器拦截……

jeongee 发表于 2012-5-11 13:47:23

甲鱼 发表于 2012-5-11 13:44 static/image/common/back.gif
我是根据AJAX请求的参数生成了一个链接,处理完链接想直接在控制器里面跳转到的这个链接,理论上header() ...

你得仔细了解下ajax是什么东西,以及他的流程,被拦截,那就用js调用display为none的超链接的click方法。

甲鱼 发表于 2012-5-11 14:00:15

jeongee 发表于 2012-5-11 13:47 static/image/common/back.gif
你得仔细了解下ajax是什么东西,以及他的流程,被拦截,那就用js调用display为none的超链接的click方法。 ...

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

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

如果按照您说的,我把生成的链接封装以后返回给前端,前端再用JS解析,然后JS跳转到指定链接,可能会慢点儿吧?

yuzhigang5460 发表于 2012-5-11 20:52:16

甲鱼 发表于 2012-5-11 14:00 static/image/common/back.gif
谢了。
我这都是初学,就懂点儿皮毛。我接收到了AJAX请求的参数,也确定生成了正确的链接,现在就想能不 ...

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

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

你ajax把地址传到控制器里再跳转,ajax还在等待接收响应呢,能不能跳转还真是个问题。

甲鱼 发表于 2012-5-12 09:51:11

yuzhigang5460 发表于 2012-5-11 20:52 static/image/common/back.gif
你这种需求是很少见的。
如果真是需要在ajax里跳转,最好的方式还是用js来实现。



哦~谢了!我好好检查一下

Hex 发表于 2012-5-13 17:06:22

AJAX和跳转没什么关系吧,AJAX只是负责取数据和传递数据,并不能负责跳转URL。
你如果想从 AJAX 取到数据后跳转,只有一条路就是用 window.location.href = 'xxx';

yunnysunny 发表于 2012-5-13 18:39:23

处理完ajax请求直接在控制器里跳到另外一个网页,处理完请求调用redirect()函数
这样就会在后台经redirect后打开的网页当成ajax的返回的字符串内容返回给js。
ajax是只能接受文本内容的,你的跳转动作他会转化为跳转后打开的html内容返回给你。
页: [1]
查看完整版本: 【求助】为什么redirect失灵?出现“302 found”提示,没有跳转