-1

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

    }
};

任何帮助将不胜感激,

干杯,

科迪

4

2 回答 2

5

方法val()用于input,selecttextarea元素。

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

注意:这是我最近对几乎同一个问题的回答的完全相同的副本。您是否尝试使用一些搜索来找到解决方案?

于 2012-07-02T22:40:53.927 回答
3

你想要.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>';
于 2012-07-02T22:39:54.130 回答