Je fais une requête dans wikipedia pour obtenir un extrait et le titre avec le lien. Ensuite, si je clique sur un titre, je voudrais obtenir l’article complet dans un modal.
J’essaie d’obtenir différents articles pour chaque lien que je reçois dans la première requête.
Ici c’est un JsFiddle
$("#wiki").on('click', function(e) { var articleName = $(this).data('subject'); $.getJSON("https://it.wikipedia.org/w/api.php?callback=?", { srsearch: articleName, action: "query", list: "search", format: "json" }, function(data) { $("#results ul").empty(); $("#results ul").append("Results for " + articleName + "
").text(); $.each(data.query.search, function(i, item) { $("#results").append("" + item.title + "
" + item.snippet + "</li"); var myLink = $("#results ul li a").attr("href"); $("#results div a").attr("href", "#"); $('.modal').on('show.bs.modal', function (e) { $.getJSON("https://it.wikipedia.org/w/api.php?action=parse&format=json&callback=?", { page: articleName, prop:"text" }, function(data) { $(".modal-content").html(data.parse.text['*']); }); }); }); });
HTML
Utilisez .one()
à l’élément #wiki
click
, event.preventDefault()
, event.stopPropagation()
lors d’ ul a
événement de click
élément; définir la page
sur e.relatedTarget.textContent
à l’ e.relatedTarget.textContent
de $.getJSON()
dans le gestionnaire d’événements show.bs.modal
$("ul").on("click", "a", function(e) { e.preventDefault(); e.stopPropagation(); }) $("#wiki").one('click', function(e) { var articleName = $(this).data('subject'); $.getJSON("https://en.wikipedia.org/w/api.php?callback=?", { srsearch: articleName, action: "query", list: "search", format: "json" }, function(data) { $("#results ul").empty(); $("#results ul").append("Results for " + articleName + "
").text(); //For each result i set a with the title and snippet. //The title will be a disabled link with the //data-atsortingbutes to load the modal $.each(data.query.search, function(i, item) { $("#results").append(" " + item.title + "
" + item.snippet + "
jsfiddle https://jsfiddle.net/kgyc8to4/26/