Отправить значение JSON в URL

У меня есть объект JSON:

[{"page":"Test",
    "seconds":"56",
}]

И я пытаюсь использовать Javascript для загрузки значения 'page' в свой URL-адрес, когда он загружается, и после количества секунд в значении 'seconds' обновляю страницу.

Когда я нажимаю ссылку <a href = "testpage.php?screen=1"></a>, я не хочу, чтобы URL-адрес когда-либо был просто testpage.php?screen=1, но я хочу, чтобы при загрузке страницы немедленно добавлялось значение 'page' к URL-адресу, например:

testpage.php?screen=1&page=Test

Вот сценарий, который у меня есть на данный момент:

<script type = "text/javascript">
let obj = <?php echo $object; ?>;//This is my JSON object, already encoded and parsed

let params = new URL(document.location).searchParams;
params.set("page", obj[0].page);

window.setTimeout(function () {
    window.location.href = /*not sure here*/;
}, obj.seconds * 1000);

</script>

Любая помощь в завершении этого сценария приветствуется, я просто не уверен, как выполнить это, чтобы выполнить соответствующую функцию.

ОБНОВИТЬ:

Попытка показать и скрыть контент в зависимости от интервала

Если в моем JSON есть элементы с одним идентификатором страницы, это работает нормально, но если есть 2 элемента для страницы 1 и 2 элемента для страницы 2, это не сработает.

Я хотел бы показать элементы для первой страницы, а после интервала вместо этого показать следующий элемент

let obj = [{
    "pageID": "93",
    "page_type_id": "2",
    "display_id": "2",
    "duration": "74",
    "background_img": "images/bg_rainbow.svg",
    "panel_id": "86",
    "panel_type_id": "2",
    "cont_id": "138",
    "contID": "138",
    "content": "\r\n\r\n\r\n</head>\r\n\r\nLeft 93</p>\r\n</body>\r\n</html>"
  },
  {
    "pageID": "93",
    "page_type_id": "2",
    "display_id": "2",
    "slide_order": null,
    "duration": "74",
    "background_img": "images/bg_rainbow.svg",
    "panel_id": "87",
    "panel_type_id": "3",
    "cont_id": "139",
    "contID": "139",
    "content": "\r\n\r\n\r\n</head>\r\n\r\nRight 93</p>\r\n</body>\r\n</html>"
  },
{
    "pageID": "94",
    "page_type_id": "2",
    "display_id": "2",
    "slide_order": null,
    "duration": "75",
    "background_img": "images/bg_rainbow.svg",
    "panel_id": "88",
    "panel_type_id": "3",
    "cont_id": "140",
    "contID": "140",
    "content": "\r\n\r\n\r\n</head>\r\n\r\nRight New</p>\r\n</body>\r\n</html>"
  }
];
let counter = 0;

var fullContent = document.getElementById('fullContent');
var leftContent = document.getElementById('leftContent');
var rightContent = document.getElementById('rightContent');

var fullColumn = document.getElementById('fullColumn');
var leftColumn = document.getElementById('leftColumn');
var rightColumn = document.getElementById('rightColumn');



setInterval(() => {
  const currentJSONobject = obj[counter];

  if (currentJSONobject.page_type_id == 1) {

    leftColumn.style.display = "none";
    rightColumn.style.display = "none";
    

    if (currentJSONobject.panel_type_id == 1) {

      fullContent.innerHTML = currentJSONobject.content;
    }

    //If half page    
  } else if (currentJSONobject.page_type_id == 2) {

    fullColumn.style.display = "none";


    if (currentJSONobject.panel_type_id == 2) {

      leftContent.innerHTML = currentJSONobject.content;

    } else if (currentJSONobject.panel_type_id == 3) {

      rightContent.innerHTML = currentJSONobject.content;
    }
  }

  $('#middle').css('background-image', 'url(' + currentJSONobject.background_img + ')');

  counter += 1;
  if (counter === obj.length) {
    counter = 0;
  }

}, 1500)
console.info(obj);
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class = "row middle">
  <!-- Full Page Divs -->
  <div class = "col-lg-12" id = "fullColumn">
    <div class = "fullContent" id = "fullContent" style = "height: 100%; ">
    </div>
  </div>
  <!-- End Full Page Divs -->

  <!-- Half Page Divs -->
  <div class = "col-lg-6 leftColumn">

    <div class = "leftContent" id = "leftContent" style = " height: 100%; ">

    </div>
  </div>

  <div class = "col-lg-6 rightColumn">

    <div class = "rightContent" id = "rightContent" style = " height: 100%; ">

    </div>

  </div>
  <!-- End Half Page Divs -->
</div>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
64
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам необходимо сохранить новый объект URL в переменной, чтобы вы могли изменить его целиком.

let newUrl = new URL(document.location);
newUrl.searchParams.set("page", obj[0].page);
window.setTimeout(function() {
    window.location.href = newUrl.href;
}, obj[0].seconds * 1000);

Надеюсь, следующий код вам подойдет.

Следующий код был написан с учетом того, что последний элемент массива obj будет использоваться для перезагрузки.

<?php //testpage.php
    $arr = array(
        array("page"=>"Test","seconds"=>2),
        array("page"=>"Dummy","seconds"=>3),
    );

    $object = json_encode($arr);
?>
<h1>This is test page </h1>

<script type = "text/javascript">
    function reloadPage() {
        var obj = <?php echo $object?>;
        alert("Page is going to reload in "+obj[obj.length-1].seconds+" seconds");
        let newUrl = new URL(document.location);
        newUrl.searchParams.set("page", obj[obj.length-1].page);
        window.setTimeout(function() {
        window.location.href = newUrl.href;
        }, obj[obj.length-1].seconds * 1000);
    }

    var url = new URL(document.location);
    if (!url.searchParams.get("page")){
        window.addEventListener('load', reloadPage, false );
    }
</script>

Спасибо, я скоро смогу протестировать 5his. Сможете ли вы сделать это на скрипке?

Geoff_S 07.08.2018 04:39

@TomN. Я тестировал этот код в своей локальной системе, у меня он работал нормально. Не стесняйтесь протестировать его, и, в случае возникновения каких-либо проблем, не стесняйтесь связаться со мной по адресу [email protected].

Ronit Mukherjee 07.08.2018 07:49

Спасибо, я думаю, это работает, за исключением того, что при загрузке страницы ничего не добавляется. Я пытаюсь сделать это там, где я могу масштабировать его дальше, но если я перейду по ссылке, указанной в моем вопросе выше, она ничего не добавит к URL-адресу до обновления. Я бы хотел, чтобы он сразу добавлялся при загрузке первой страницы, а затем обновлялся, чтобы выполнить тот же процесс.

Geoff_S 07.08.2018 12:58

Другие вопросы по теме