Как добавить переменную строки запроса к существующему URL с помощью history.pushState? - PullRequest
2 голосов
/ 29 марта 2020

У меня в настоящее время есть 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, чтобы открыть другое изображение, я хочу, чтобы функция click добавляла идентификатор изображения в конец 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 ]

1 голос
/ 29 марта 2020

Здесь вы go босс, анализируете текущую строку запроса URL, создаете переменную, а затем добавляете ее в уравнение. Это Dynami c, поскольку вы хотели, чтобы его содержание основывалось на клике.

$(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(); 
          });
        });
0 голосов
/ 29 марта 2020

Если вам нужно несколько переменных строки запроса, вам нужно объединить их с &. Таким образом -> projects.php?firstVar=1&secondVar=2.

В качестве альтернативы вы также можете использовать ха sh #, который не потребует от вас нажатия кнопки, а просто обернет ваши изображения в обычный якорь, такой как projects.php/?info=23#photo1. URL изменится, когда пользователь нажмет на img

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...