Wie ersetze ich das HTML-Element von Ajax Response? Was ich weiß, ist das Element zu entfernen. Wie ersetze ich das entfernte Tag durch eine Ajax-Antwort? Zum Beispiel:
Ich habe folgenden Code:
<ul id="products">
...............
</ul>
Wenn ich auf eine Schaltfläche klicke, wird der Ajax-Aufruf an den Codeginter-Controller gerichtet, bei dem die neuen Daten aus der Datenbank abgerufen und in einer anderen Ansicht gerendert werden, die mit ul beginnt und mit dem Schließen von ul endet.
In der Ajax-Erfolgsfunktion mache ich das:
$('#products').remove();
//What to do now here to replace the removed portion with response of ajax?
Sie können replaceWith verwenden (siehe: http://api.jquery.com/replaceWith/ ).
Wie: $('#products').replaceWith(response);
BEARBEITEN: Die von pascalvgemert erwähnte replaceWith-Funktion ist besser https://stackoverflow.com/a/19527642/2887034
Erstellen Sie einen Wrapper darum:
<div id="wrapper">
<ul id="products">
...............
</ul>
</div>
Jetzt können Sie Folgendes tun:
$('#wrapper').html(responseData);
Angenommen, Sie ersetzen Ihre Produkte. Wenn Sie formatiertes HTML von Ihrem Controller erhalten, tun Sie dies einfach
success : function(response) {
$('#products').html(response);
}
<Ul> -Tag muss nicht entfernt werden. Sie können alte <li> s einfach durch neue <li> s ersetzen
Befindet sich Ihr Haupt-Div in einem anderen Container mit einer anderen ID, können Sie dies tun:
Basierend auf dieser Struktur:
<div id="mainContainer">
<ul id="products">
...............
</ul>
</div>
Javascript-Code, der Jquery für Ajax verwendet
$.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);
});
Eine einfache Möglichkeit ist, Ihre ul in einen Behälter zu verpacken
<div id="container">
<ul id="products">
...............
</ul>
</div>
in Ajax Antwort
success:function(data){
$("#container").html(data)
}
.remove () nimmt das Element vollständig aus dem DOM heraus. Wenn Sie einfach Elemente innerhalb des products
-Elements ersetzen möchten, verwenden Sie .ReplaceWith () .
Wenn Sie alle <li>
als HTML zurückgeben, können Sie .html () verwenden.