如何使用 history.pushState 将查询字符串变量附加到现有 URL?
How to append query string variable to existing URL with history.pushState?
我目前有一个 URL 显示我的所有项目:
http://localhost:8090/projects.php
当我点击一个时,我可以使用这个简单的代码将一个变量附加到 URL 的末尾:
$(document).ready(function() {
$(".projects-container").on("click", ".procject-listing", function(){
history.pushState({}, '', '?info='+$(this).attr("id"));
$(".project-info").show();
});
});
URL变为:
http://localhost:8090/projects.php/?info=23
完美运行。问题是,当我在 "info" div 中单击以打开另一张图片时,我希望单击功能将图片 ID 附加到 URL:
的末尾
$(document).ready(function() {
$(".photo-block").on("click", ".photo", function(){
history.pushState({}, '', '?photo='+$(this).attr("id"));
$(".photo-viewer").show();
});
});
我希望 url 看起来像:
http://localhost:8090/projects.php/?info=23?photo=1
相反,我得到了:
http://localhost:8090/projects.php/?photo=1
有什么方法可以附加到 URL 而不是覆盖 'already-there' 查询字符串变量?
我一直在研究其他问题,但它们似乎没有解决我的问题。
谢谢!!
如果你想要多个查询字符串变量,你需要用 &
连接它们。因此 -> projects.php?firstVar=1&secondVar=2
.
或者,您也可以使用散列 #
,它不需要您推送状态,而只是将您的图片包裹在像 projects.php/?info=23#photo1
这样的普通锚点中。当用户点击 img
时,url 会改变
给你老板,解析当前URL查询字符串,创建一个变量,然后将其添加到等式中。它是动态的,因为它的内容基于点击。
$(document).ready(function() {
$(".photo-block").on("click", ".photo", function(){
function query_string(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);}
history.pushState({}, '','?info=' + info +'?photo='+$(this).attr("id"));
$(".photo-viewer").show();
});
});
我目前有一个 URL 显示我的所有项目:
http://localhost:8090/projects.php
当我点击一个时,我可以使用这个简单的代码将一个变量附加到 URL 的末尾:
$(document).ready(function() {
$(".projects-container").on("click", ".procject-listing", function(){
history.pushState({}, '', '?info='+$(this).attr("id"));
$(".project-info").show();
});
});
URL变为:
http://localhost:8090/projects.php/?info=23
完美运行。问题是,当我在 "info" div 中单击以打开另一张图片时,我希望单击功能将图片 ID 附加到 URL:
的末尾
$(document).ready(function() {
$(".photo-block").on("click", ".photo", function(){
history.pushState({}, '', '?photo='+$(this).attr("id"));
$(".photo-viewer").show();
});
});
我希望 url 看起来像:
http://localhost:8090/projects.php/?info=23?photo=1
相反,我得到了:
http://localhost:8090/projects.php/?photo=1
有什么方法可以附加到 URL 而不是覆盖 'already-there' 查询字符串变量?
我一直在研究其他问题,但它们似乎没有解决我的问题。
谢谢!!
如果你想要多个查询字符串变量,你需要用 &
连接它们。因此 -> projects.php?firstVar=1&secondVar=2
.
或者,您也可以使用散列 #
,它不需要您推送状态,而只是将您的图片包裹在像 projects.php/?info=23#photo1
这样的普通锚点中。当用户点击 img
给你老板,解析当前URL查询字符串,创建一个变量,然后将其添加到等式中。它是动态的,因为它的内容基于点击。
$(document).ready(function() {
$(".photo-block").on("click", ".photo", function(){
function query_string(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);}
history.pushState({}, '','?info=' + info +'?photo='+$(this).attr("id"));
$(".photo-viewer").show();
});
});