jquery val() 不会显示值

jquery val() will not display value

本文关键字:显示 val jquery      更新时间:2023-09-26

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>';