CakePHP在用JavaScript打开新窗口后没有重定向
CakePHP not redirecting after opening new window with JavaScript
在我的一项操作中,我通过javascript窗口将商品添加到外部网站上的购物车中。添加后,我重定向回主页,但是CakePHP没有重定向。正在将项目正确添加到购物车中。
//OrdersController
function place_filled_orders($id = null){
$this->layout = false;
$this->autoRender = false;
?>
<script>
cart_window = window.open("http://www.example.com/load_cart_with_stuff");
cart_window.close();
</script>
<?
$this->redirect(array('controller' => 'orders', 'action' => 'home'));
}
当我点击与此操作对应的链接时,它只停留在/orders/place_filled_orders上,而不是重定向到/orders/home
您不能以这种方式在控制器中添加脚本。这完全违反MVC规则,因此你应该避免它。你应该添加一个同时执行这两个操作的视图(或元素):
因此,添加一个app/View/Orders/place_filled_order.ctp
文件,其中包含以下内容:
<?php
echo $this->Html->scriptBlock('
cart_window = window.open("http://www.example.com/load_cart_with_stuff");
cart_window.close();
window.location.href = "' . $this->webroot . '/orders/home";
');
编辑
乍一看,实际上您正在寻找requestAction方法。所以你会让你的控制器看起来像:
function place_filled_orders($id = null) {
$this->autoRender = false;
$this->requestAction('/load_cart_with_stuff');
$this->redirect(array('controller' => 'orders', 'action' => 'home'));
}
相关文章:
- 新窗口重定向到我的主页
- 窗口重定向未重定向
- 无法将父窗口从modaldialog子窗口重定向到另一个页面
- 如何从 jquery 中的警报弹出窗口重定向到新页面
- JavaScript窗口重定向不会启动
- 弹出窗口重定向在IE中不起作用,但在其他浏览器中可以
- JavaScript 窗口重定向安全地传递参数 (POST)
- 关闭“颜色框”并将父窗口重定向到特定 URL
- 发布到iframe,但iframe将顶部窗口重定向到操作url,而不是self
- javascript子窗口重定向主窗口
- 尝试创建J-Query弹出窗口重定向到另一个弹出窗口
- 将父窗口重定向为子窗口关闭,而不向子窗口添加代码
- Javascript窗口重定向在chrome中不起作用((取消)-状态)
- js窗口.重定向不断更新
- 从弹出窗口重定向到控制器类
- Javascript:通过弹出窗口重定向到另一个站点
- 窗口.重定向后,Opener为空
- 做新的窗口重定向确认添加点
- Javascript警报窗口重定向到另一个网页
- 在 chrome 扩展程序内容脚本中,如何将当前窗口重定向到其他 url 并且仍然让脚本继续