[英]How can I insert this block of html into a page from a json response with jquery?
<script type="text/javascript">
var dataString2 = 'run=captchagood&comment=' + comment;
$.ajax({
type: "POST",
url: "process.php",
data: dataString2,
dataType: "json",
error: 'error',
success: function (data) {
if (data.response === 'captchasuccess') {
$('div#loader').find('img.load-gif').remove();
$('div#loader').append('<span class="success">Thanks for your comment!</span>');
$('div#loader').hide().fadeIn('slow');
$('span.limit').remove();
$('ol#commentlist').prepend(data.comment);
$('input#submit-comment').unbind('click').click(function () {
return false;
});
};
}
});
</script>
我需要上面的代码将以下代码附加到当前页面的评论列表中。
COMMENT-ID-NUMBEER =这将是上面json响应的一部分
COMMENT-POST-DATE =这将是上面json响应的一部分
COMMENT-TEXT =这将是上面json响应的一部分
USER-GENDER =这在PHP会话中
USER-IMAGE-URL =这在PHP会话中
USER-NAME =这在PHP会话中
这是我需要在页面中插入的以下代码,但我直接在上面列出的项目也要插入适当的位置。
<ol class="commentlist" id="commentlist">
<!-- START Comment block -->
<li class="thread-even" id="COMMENT-ID-NUMBEER">
<div class="photocolumn">
<div class="imageSub" style="width: 100px;">
<img class="USER-GENDER" src="USER-IMAGE-URL" width="100"/>
<div class="blackbg"></div>
<div class="label">USER-NAME</div>
</div>
</div>
<div class="commenttext">
<span class="comment_date">COMMENT-POST-DATE</span>
<p>COMMENT-TEXT</p>
</div> <!-- END COMMENTTEXT -->
<div class="modcolumn">
<a href=""><img class="delete " src="../../images/icons/error.gif"></a>
Delete
</div>
</li>
<!-- END comment block-->
</ol>
另一个问题是,列表单元格在脚本中交替显示背景颜色,因此如何根据上一项插入class =“ thread-even”或class =“ thread-odd”?
我建议将该HTML块作为模板隐藏在页面上。 当您获得ajax响应时,请使用jquery克隆它,插入实例特定的数据,然后将其附加到您的页面。
要替换注释类,只需检查最后一个注释类,然后使用相反的类。 当然,您需要为第一条评论使用默认类。
例:
将其放置在页面上的某处,并被CSS或javascript隐藏:
<!-- START Comment block -->
<li class="thread-even" id="comment_template">
<div class="photocolumn">
<div class="imageSub" style="width: 100px;">
<img class="USER-GENDER" src="USER-IMAGE-URL" width="100"/>
<div class="blackbg"></div>
<div id="username" class="label">USER-NAME</div>
</div>
</div>
<div class="commenttext">
<span class="comment_date">COMMENT-POST-DATE</span>
<p>COMMENT-TEXT</p>
</div> <!-- END COMMENTTEXT -->
<div class="modcolumn">
<a href=""><img class="delete " src="../../images/icons/error.gif"></a>
Delete
</div>
</li>
<!-- END comment block-->
接下来,在您的成功回调中,您将需要执行上述操作。 这是一个入门的示例:
//clone your template
var comment = $('#comment_template').clone();
//insert instance specific data
$('#username', comment).html(USERNAME);
$('.comment_date', comment).text(DATE);
//do the rest
//append it to your page
$('#commentlist').append(comment);
为什么不让服务器端将HTML作为JSON对象的键之一返回。 您应该已经具有显示准备好的注释的所有逻辑,因此在data.htmlComment
返回它的“ HTML格式”版本并不难。
针对您的第二个问题:
“另一个问题是,列表单元格在脚本中会交替显示背景色,因此如何根据上一项插入class =“ thread-even”或class =“ thread-odd”?
测试最后一个元素是否具有偶数类(如果是),则为其赋予奇数类,反之亦然:
if ( $("#mylist > :last").is(".thread-even") ){
$(/* thing appending to */).append( /* whatever */ );
$("#mylist > :last").addClass('thread-odd');
} else if ( $("ul > :last").is(".thread-odd") ){
$(/* thing appending to */).append( /* whatever */ );
$("#mylist > :last").addClass('thread-even');
}
使用的选择器选择指定ID的最后一个子代。 一旦附加了最后一个孩子,就应该是给新类提供的东西,因此您可以使用相同的选择器;)可能会有更好的方法将其适合您的代码,但是代码片段应该为您提供需要让它工作...祝你好运:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.