J'essaie de résoudre ce problème depuis des heures maintenant, peut-être que l'un d'entre vous pourrait m'aider.

En ce moment mon code ressemble à ceci:

$('.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>

Tout fonctionne bien mais je me demandais s'il était possible d'utiliser $('#main').html(data) sur une nouvelle fenêtre. À l'heure actuelle, si je clique sur un élément, la fenêtre actuelle affiche le résultat, mais je souhaite qu'un nouvel onglet s'affiche avec le résultat.

J'essayais des trucs comme ça :

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

Le résultat que j'obtiens est que la fenêtre s'ouvre sur la page principale. On dirait que window.open(url) fonctionne très bien, mais la ligne ci-dessous ne fait rien.

0
rdlgi 19 mars 2019 à 15:53

2 réponses

Meilleure réponse

La raison pour laquelle cela ne fonctionne probablement pas est due au fait que vous utilisez :

window.document.getElementById('main')

La fenêtre est peut-être déjà ouverte par la ligne précédente, mais n'est probablement pas chargée et ne contient pas encore d'élément avec id main (puisque faire une requête HTTP(S) prend du temps ). Cela pourrait être résolu en déplaçant le remplissage de l'élément main dans un rappel.

window.addEventListener('load', function () {
  window.document.getElementById('main').innerHTML = data;
}, { once: true });
0
3limin4t0r 19 mars 2019 à 15:03

Vous pouvez envoyer les données dont vous avez besoin pour la demande dans l'URL, puis sur la nouvelle page, vous pouvez envoyer à nouveau la demande AJAX et obtenir les données dont vous avez besoin à partir de l'URL.

0
Bojan Ivanac 19 mars 2019 à 14:28