0

假设我有 btn1 和 btn2 在通过 Ajax 单击它们时将一些数据加载到 div 中,如下所示:

$(document).on('click', '#btn1', function(e){
    var url = "<?= $this->Url->build(['controller' => 'MyController', 'action' => 'my_action', '?' => ['param1' => 'abc']], ['escape' => false]); ?>";

    $('#my_container').load(url);
});

$(document).on('click', '#btn2', function(e){
    var url = "<?= $this->Url->build(['controller' => 'MyController', 'action' => 'my_action', '?' => ['param2' => 'def']], ['escape' => false]); ?>";

    $('#my_container').load(url);
});

正如你在上面看到的,每个按钮调用相同的控制器操作,但传递具有不同值的不同查询字符串(param1 和 param2)。

我希望能够将查询字符串附加到当前 url,而不是仅仅加载附加到每个按钮含义的链接:

如果我点击 btn1,我加载的 url 将是:

http://example.com/mycontroller/my_action/?param1=abc

但是如果我再点击 btn2,我的 url 应该变成:

http://example.com/mycontroller/my_action/?param1=abc&param2=def

代替:

http://example.com/mycontroller/my_action/?param2=def

所以我想将查询字符串附加到现有的 url。

请记住,这些是 Ajax 调用。所以当前加载的 url 在浏览器中是不可见的。

有没有 CakePHP 3 的方式来做到这一点?我意识到这已经适用于分页。有人知道如何使用自定义查询字符串进行这项工作吗?

提前致谢

4

1 回答 1

0

你在寻找这样的东西吗?

function getQueryVariable(variable)
{
       var query = window.location.search.substring(1);
       var vars = query.split("&");
       for (var i=0;i<vars.length;i++) {
               var pair = vars[i].split("=");
               if(pair[0] == variable){return pair[1];}
       }
       return(false);
}

这将为您提供当前的查询字符串项目。现在你只需要操纵它并使用它。

可在https://css-tricks.com/snippets/javascript/get-url-variables/找到

于 2018-08-22T06:56:09.467 回答