在发出请求时从URL隐藏函数参数

时间:2014-06-03 05:22:34

标签: php url cakephp routing

我希望在对特定操作发出请求时隐藏我的网址中的操作参数。例如,

<?php 

   echo $this->Html->url(array('controller' => 'controllerName', 'action' => 'actionName', parameter1, $parameter2)); 

 ?>

以上代码将生成url:

  controllerName/actionName/1/123

我想要实现的是,当用户点击此类网址时,param1 (= 1)param2 (= 123)不应该对他可见,并且链接应该是,

  controllerName/actionName    /* no attribute visible */

这可能吗?我是如何实现这一点的,我正在阅读Routing,但无法实现这一目标!

2 个答案:

答案 0 :(得分:1)

使用POST请求代替GET,或使用pushState将浏览器的网址栏设置为您想要的任何内容。

答案 1 :(得分:0)

经过大量搜索和尝试很多事情,我最终得到了这个解决方案。

生成链接,并将动作名称和参数绑定为数据:

<a class="blue viewDetailButton" data-action='<?= $detail["controllerActionName"] ?>' data-request_id='<?= $detail["request_id"] ?>' >

现在,编写了一个jquery脚本,它将在click事件上触发并发出一个post请求(以post作为数据提交表单作为数据):

$(document).on("click", ".viewDetailButton", function(event) {
        event.preventDefault();

        var url = '<?= $this->Html->url(array('controller' => 'requests', 'action'=>null)) ?>/'+$(this).data("action");
        var form = $('<form action="' + url + '" method="post">' +
          '<input type="text" name="id" value="'+$(this).data("request_id")+'" />' +
          '</form>');
         $(form).submit();
  }) ;