将查询字符串附加到现有的ajax url cakephp 3

时间:2018-08-22 05:29:34

标签: php cakephp cakephp-3.6

假设我有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);
});

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

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

如果我单击btn1,则加载的网址将是:

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

但是,如果我随后单击btn2,则我的网址应为:

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

代替:

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

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

请记住,这些是Ajax调用。因此,当前加载的网址在浏览器中不可见。

有CakePHP 3方式吗?我意识到这已经可以通过分页了。有人知道如何通过自定义查询字符串来实现此功能吗?

预先感谢

1 个答案:

答案 0 :(得分: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/