繁体   English   中英

jQuery val()将不显示值

[英]jquery val() will not display value

html()应该用于设置非格式元素(例如div)中的内容。 **这个问题已经被回答了几次,我没有意识到。

我试图从$ .ajax调用中获取评论后设置一个值。 当我提醒commentOutput和commentSpan的值时,它们显示正确的数据。 但是,当我尝试从一个范围中的那些注释中设置值时,它们不会显示,也不会出现在生成的源中。

这是JavaScript。 您可以在控制台中查看POST的返回信息。 您还可以看到它正在捕获范围的值,因为我已经在单击时提醒了它。

要调用此功能,只需单击猫的第一张图片,此时其他人都没有评论。

var ajaxOptions = {
    type: 'POST',
    dataType: 'json',
    url: 'ajax/comments.php',
    data: { id: photoID, action: 'GetComments' },
    success: function(data) {

            for(i=0; i<data.length; i++) {

                    var commentOutput = '<div><h4>'+data[i].comment_user+' says:</h4>';
                    commentOutput += '<span>'+data[i].comment_msg+'</span>';
                    commentOutput += '</div>';
                    var commentSpan = '#photo' + data[i].photo_id + ' .comments';
                    $(commentSpan).val(commentOutput);
                    $(commentSpan).delay('200').css('display','block');
            }

    }
};

任何帮助将不胜感激,

干杯,

科迪

val()方法用于inputselecttextarea元素。

您应该改用html()text()方法。

注意:这是我最近对几乎同一问题的答案的准确副本。 您是否尝试过通过搜索找到解决方案?

您需要.html() ,而不是.val()

$(commentSpan).html(commentOutput);

另外,如果您的服务器未使用HTML将注释数据转义,则应在脚本中执行此操作:

function safe(s) {
  return s.replace(/&/g, '&amp;').replace(/>/g, '&gt;').replace(/</g, '&lt;');
}

// ...


var commentOutput = '<div><h4>'+ safe(data[i].comment_user) + ' says:</h4>';
commentOutput += '<span>'  + safe(data[i].comment_msg) + '</span>';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM