Comment remplacer l'élément html de la réponse ajax? Ce que je sais, c’est de supprimer l’élément. Comment remplacer cette balise supprimée par une réponse ajax? Par exemple:
J'ai un code comme ça:
<ul id="products">
...............
</ul>
Lorsque je clique sur un bouton, l'appel ajax est envoyé au contrôleur codeginter où je reçois les nouvelles données extraites de la base de données et restituées dans une autre vue qui commence par ul et se termine à la fermeture ul.
Dans la fonction de réussite ajax, je fais ceci:
$('#products').remove();
//What to do now here to replace the removed portion with response of ajax?
Vous pouvez utiliser replaceWith (voir: http://api.jquery.com/replaceWith/ )
Comme: $('#products').replaceWith(response);
EDIT: la fonction replaceWith mentionnée par pascalvgemert est meilleure https://stackoverflow.com/a/19527642/2887034
Créez un emballage autour de lui:
<div id="wrapper">
<ul id="products">
...............
</ul>
</div>
Maintenant, vous pouvez faire ce qui suit:
$('#wrapper').html(responseData);
En supposant que vous remplaciez vos produits, si vous obtenez du code HTML formaté de votre contrôleur, faites simplement ceci.
success : function(response) {
$('#products').html(response);
}
Pas besoin de supprimer la balise <ul>. Vous pouvez simplement remplacer les anciens <li> s par les nouveaux <li> s
Si votre div principale est dans un autre conteneur avec un autre identifiant, vous pouvez le faire:
Basé sur cette structure:
<div id="mainContainer">
<ul id="products">
...............
</ul>
</div>
Code Javascript utilisant jquery pour ajax
$.ajax({
url: "action.php",
context: document.body
}).done(function(response) {
$('#products').remove(); // you can keep this line if you think is necessary
$('mainContainer').html(response);
});
Un moyen facile est d'envelopper votre ul dans un conteneur
<div id="container">
<ul id="products">
...............
</ul>
</div>
en réponse ajax
success:function(data){
$("#container").html(data)
}
.remove () retire complètement l'élément du DOM. Si vous voulez simplement remplacer des éléments dans l'élément products
, utilisez .ReplaceWith () .
Si vous renvoyez tous les <li>
en HTML, vous pouvez utiliser .html ()