Можно ли использовать jQuery в новом окне? - PullRequest
0 голосов
/ 19 марта 2019

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

Прямо сейчас мой код выглядит так:

$('.clickable').on('click', function() {
  var id = $(this).attr('data-packages');
  id = "'" + id + "'";
  $.ajax({
    url: "show.php",
    data: {
      type: "showSFM",
      data: id,
      user: username
    },
    type: "POST",
    success: function(data) {
      $('#main').html(data);
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Все работает нормально, но я спрашивал себя, можно ли использовать $('#main').html(data) в новом окне.Прямо сейчас, если я щелкаю по элементу, текущее окно показывает результат, но я хочу, чтобы всплыла новая вкладка с результатом.

Я пробовал что-то вроде этого:

success: function(data) {
  var url = location.href;
  var window = window.open(url);
  window.document.getElementById('main').innerHTML = data;
}

В результате я получаю, что окно открывается на главной странице.Похоже, window.open(url) работает просто отлично, но строка ниже ничего не делает.

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Причина, по которой это, скорее всего, не работает, связана с тем, что вы используете:

window.document.getElementById('main')

Возможно, окно уже было открыто строкой ранее, но, скорее всего, оно не загружено и не работаетсодержит элемент с id main (поскольку выполнение запроса HTTP (S) требует времени).Эту проблему можно решить, переместив заполнение элемента main в функцию обратного вызова.

window.addEventListener('load', function () {
  window.document.getElementById('main').innerHTML = data;
}, { once: true });
0 голосов
/ 19 марта 2019

Вы можете отправить данные, необходимые для запроса, в URL-адресе, а затем на новой странице вы можете снова отправить запрос AJAX и получить необходимые данные из URL-адреса.

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