为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 history.pushState 将查询字符串变量附加到现有 URL?

如何使用 history.pushState 将查询字符串变量附加到现有 URL?

慕斯王 2022-06-05 16:18:28
我目前有一个显示我所有项目的 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完美运行。问题是,当我在“信息” 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 而不是覆盖“已经存在”的查询字符串变量?我一直在看其他问题,但他们似乎没有解决我的问题。谢谢!!
查看完整描述

2 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

老大,在这里,解析当前的 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(); 

          });

        });


查看完整回答
反对 回复 2022-06-05
?
慕少森

TA贡献2019条经验 获得超9个赞

如果您想要多个查询字符串变量,则需要将它们与&. 因此 -> projects.php?firstVar=1&secondVar=2

或者,您也可以使用#不需要推送状态的哈希,而只需将图片包装在普通锚点中,例如projects.php/?info=23#photo1. 当用户点击img时,url会改变


查看完整回答
反对 回复 2022-06-05
  • 2 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号