在将字符串附加到文档之前解开字符串

时间:2012-07-24 12:40:40

标签: jquery ajax string

我编写了以下代码,以便在我的#displayResult表格中添加一个新的表格行,其中包含我在提交时从#getInfo表单收到的数据。

我被要求在我的textarea(jHtmlArea)中实现WYSIWYG HTML编辑器,以便用户可以在他们的评论中添加基本样式。它只是将目标内容包含在<b/><i/>标记中,例如。

在我的表格中,仅显示实际评论的预览(限制为40个字符),我使用PHP strip_tags()确保在显示的预览中不显示样式/不需要的标记页面刷新后。

简而言之,我想对我的AJAX响应应用相同的处理方式,所以我基本上都在寻找一种在这种情况下模仿strip_tags()的JS方法。

我的问题是:我如何解开评论,并在附加之前的所有<b/><i/>标签中清除评论?关于如何实现这一目标的任何想法?

感谢您的帮助。

$('#getInfo').submit(function(e) {
    e.preventDefault();

    var company = $('select#company').val();
    var name = $('input#name').val();
    var comment = $('textarea#comment').val();
    comment = comment.substring(0,40);
    comment = comment + '...'; 

    var dataString = [company, name, comment];
    var n = dataString.length;

    var row = $('<tr class="temp">');       

    $.ajax({
        type: 'POST',
        url: '../process.php',
        data: $('#getInfo').serialize(),
        success: function() {

            for(var i = 0; i < n; i++) {
                row
                    .append($('<td>')
                    .html(dataString[i]))
            }

            $(row).appendTo('#displayResult').hide().fadeIn('slow');
        }
    });
});

1 个答案:

答案 0 :(得分:0)

您可以使用响应创建一个jQuery对象,然后按如下方式获取文本:

var theString = dataString[i];
var strippedString = $(theString).text();

这将基本上创建一个新的jQuery对象,解析包装响应的任何标签。然后使用.text()方法将只获取文本,忽略这些标记。

//编辑

回答有关上述行放置位置的查询...我建议按如下方式使用它们:

for(var i = 0; i < n; i++) {
    var theString = dataString[i];
    var strippedString = $(theString).text();
    row
        .append($('<td>')
        .html(strippedString))
    }

这会修改您已经拥有的代码,而是将剥离的文本插入到表的每一行中。