假设我有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¶m2=def
代替:
http://example.com/mycontroller/my_action/?param2=def
所以我想将查询字符串附加到现有的URL。
请记住,这些是Ajax调用。因此,当前加载的网址在浏览器中不可见。
有CakePHP 3方式吗?我意识到这已经可以通过分页了。有人知道如何通过自定义查询字符串来实现此功能吗?
预先感谢
答案 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/