Ajax応答からhtml要素を置き換えるにはどうすればよいですか?私が知っていることは、要素を削除することです、その削除されたタグをajax応答に置き換えるにはどうすればよいですか?例えば:
私はこのようなコードを持っています:
<ul id="products">
...............
</ul>
ボタンをクリックすると、codeginterコントローラーへのajax呼び出しが行われ、データベースからプルされた新しいデータを受け取り、ulで始まりulを閉じる別のビューでレンダリングされます。
Ajax成功関数でこれを行います:
$('#products').remove();
//What to do now here to replace the removed portion with response of ajax?
ReplaceWithを使用できます(参照: http://api.jquery.com/replaceWith/ )
いいね:$('#products').replaceWith(response);
編集:pascalvgemertで言及されているreplaceWith関数の方が優れています https://stackoverflow.com/a/19527642/2887034
その周りにラッパーを作成します。
<div id="wrapper">
<ul id="products">
...............
</ul>
</div>
これで、次のことができるようになりました。
$('#wrapper').html(responseData);
製品を交換すると仮定して、コントローラーからフォーマットされたHTMLを取得している場合は、単にこれを実行してください
success : function(response) {
$('#products').html(response);
}
<ul>タグを削除する必要はありません。古い<li>を新しい<li>に置き換えるだけです
メインdivが別のIDを持つ別のコンテナ内にある場合、次のようにすることができます。
この構造に基づいて:
<div id="mainContainer">
<ul id="products">
...............
</ul>
</div>
ajaxにjqueryを使用するJavascriptコード
$.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);
});
簡単な方法は、ulをコンテナにラップすることです
<div id="container">
<ul id="products">
...............
</ul>
</div>
ajax応答で
success:function(data){
$("#container").html(data)
}
。remove() は、DOMから要素を完全に取り出します。 products
要素内の要素を単に置き換えたい場合は、 。ReplaceWith() を使用します。
すべての<li>
をHTMLとして返す場合は、 。html() を使用できます