php 如何用 AJAX 响应替换html元素?

3yhwsihp  于 2023-02-21  发布在  PHP
关注(0)|答案(9)|浏览(171)

如何从 AJAX 响应中替换html元素?我知道的是删除元素,如何用ajax响应替换删除的标记?例如:
我有这样的代码:

<ul id="products">
...............
</ul>

当我点击一个按钮时, AJAX 调用codeginter控制器,在那里我接收到从数据库中提取的新数据,并呈现在另一个视图中,该视图从ul开始,在关闭ul时结束。
在 AJAX success函数中我是这样做的:

$('#products').remove();
//What to do now here to replace the removed portion with response of ajax?
wlwcrazw

wlwcrazw1#

您可以使用replaceWith(请参见:http://api.jquery.com/replaceWith/
例如:$('#products').replaceWith(response);

i5desfxk

i5desfxk2#

假设您正在替换您的产品,如果您正在从控制器获取格式化的HTML,那么只需执行以下操作

success : function(response) {
$('#products').html(response);
}

不需要删除< ul >标记。您可以简单地用新替换< li >旧< li >

ki0zmccv

ki0zmccv3#

编辑:pascalvgemert提到的replaceWith函数更好https://stackoverflow.com/a/19527642/2887034
在其周围创建封套:

<div id="wrapper">
    <ul id="products">
    ...............
    </ul>
</div>

现在您可以执行以下操作:

$('#wrapper').html(responseData);
mwecs4sa

mwecs4sa4#

您可以使用JQuery before

$('#products').before("yourhtmlreceivedfromajax").remove();

或者将div的内容替换为html$('#products').html("yourhtmlreceivedfromajax");

yzuktlbb

yzuktlbb5#

如果您的主div位于另一个具有其他id的容器中,您可以这样做:
基于此结构:

<div id="mainContainer">
    <ul id="products">
         ...............
    </ul>
</div>

使用jquery for AJAX 的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);
});
wz1wpwve

wz1wpwve6#

一个简单的方法是将ul Package 在容器中

<div id="container">
<ul id="products">
...............
</ul>
</div>

在 AJAX 响应中

success:function(data){
$("#container").html(data)
}
x7yiwoj4

x7yiwoj47#

.remove()将元素完全从DOM中取出,如果只想替换products元素中的内容,可以使用.ReplaceWith()
如果将所有<li>作为HTML返回,则可以使用.html()

aemubtdh

aemubtdh8#

这样做

$( "ul#products" ).replaceWith( response );

http://api.jquery.com/replaceWith/

ve7v8dk2

ve7v8dk29#

使用此:

document.open();
document.write(response);
document.close();

相关问题