【问题标题】:Hide Function parameter from URL when a request is made发出请求时从 URL 中隐藏函数参数
【发布时间】:2014-07-23 08:17:54
【问题描述】:

当对特定操作发出请求时,我想从我的 url 中隐藏操作参数。例如,

<?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 的信息,但不知道如何实现这一点!

【问题讨论】:

    标签: php url cakephp routing


    【解决方案1】:

    使用 POST 请求而不是 GET,或使用 pushState 将浏览器的 URL 栏设置为您想要的任何内容。

    【讨论】:

    • 谢谢。但是当用户点击一个 url 时,我们如何发布请求(在 cakephp 中)?我应该为此使用 CURL 吗?还是有更好的选择..?已搜索但未找到与此相关的任何内容。
    • $this-&gt;Form-&gt;postLink(__('View'), array('controller'=&gt;'controllerName', 'action' =&gt; 'actionName', $param), null) 做到了!但不幸的是,参数仍然显示在网址中。可能是什么问题?
    【解决方案2】:

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

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

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

    现在,编写了一个 jquery 脚本,该脚本将触发点击事件并执行发布请求(提交表单作为帖子,属性作为数据):

    $(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();
      }) ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-18
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      相关资源
      最近更新 更多