HTML代码如下:
CSS代码如下:
.comment { 背景颜色:浅灰色; 边框:1px 纯灰色; 底部边距:10px; 内边距:10px; }现在我们通过Ajax从服务器加载更多评论并将它们添加到评论div中以进行部分刷新。
Ajax代码如下:
函数loadComments() { var xhr = new XMLHttpRequest(); m.smtshopping.cn('GET', 'comments.php', true); xhr.onreadystatechange = 函数() { if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { var newComments = xhr.responseText; document.getElementById('comments').innerHTML += newComments; } }; xhr.send(); }在服务器端,我们返回一个包含新评论的字符串。
PHP代码如下:
$comments = “运行此代码后,点击“加载更多评论”按钮,第二条评论将成功加载到页面中。但是,我们会注意到第二条评论的样式没有正确应用,并且它没有原始评论的背景颜色、边框和间距。 出现这个问题的原因是我们使用innerHTML将服务器返回的HTML代码插入到原页面的div中。然而,innerHTML 只是将字符串直接插入到 DOM 树中,而不需要重新渲染。 为了解决这个问题,我们可以使用jQuery库中的load方法。 load方法会自动处理渲染问题,因此加载的内容不会丢失样式。”;echo $comments;这是第二条评论
修改后的Ajax代码如下:
函数loadComments() { $('#comments').load('comments.php'); }改用 jQuery 的 load 方法。我们不需要手动处理服务器返回的HTML字符串。 load 方法会将内容加载到目标 div 中并自动应用样式。 综上所述,当使用Ajax对网页中的div进行部分刷新时,div的样式可能会因为没有重新渲染而丢失。为了解决这个问题,我们可以使用jQuery等库来自动处理渲染并确保样式不丢失。
这是第一条评论