首页 > 解决方案 > 如何用jquery动态刷新和显示列表?

问题描述

我正在添加评论部分并且在显示它们时遇到了一些麻烦。这是我的保存方法

[HttpPost]
public JsonResult AddComment(int id_usr,string comment)
{
   if (ModelState.IsValid)
   {
       Comments kom = new Comments();
       kom.DateComment = DateTime.Now;
       kom.Id_usr = id_usr;
       kom.Comment = comment;
       db.Comments.Add(kom);
       db.SaveChanges();
       return Json(kom);
   }
   return Json(null);
}

获取评论值并保存 onClick

var url = window.location.pathname;
var idurl = url.substring(url.lastIndexOf('/') + 1);
$('#submit').click(function () {
  console.log('click')
  $.ajax({
  url: '/form/AddComment',
  method: 'POST',
  data: {
        comment: $("#Comments_Comment").val(),
        id_usr: idurl,
  },
  success: function (data) {
         console.log(data), //to this point all is working

我试图在列表中显示它看起来像:(只需要日期时间和评论文本)

$("#Comments2_Comment").empty(); 
data.forEach(function (item) {
var rows = "<ul>"
+ "<li>" + item.DateComment + "</li>"
+ "<li>" + item.Comment + "</li>"
+ "</ul>";
$('#Comments2_Comment').append(rows);
});

},

不幸的是,它给了我:“TypeError:data.forEach 不是函数”它应该是什么样子?

我想得到这样的东西

  • 2019-06-19: qwertyu
  • 2019-06-19: asdfghj
  • 标签: javascriptc#jqueryasp.net-ajax

    解决方案


    好的,这是您可以做什么的简单示例。我刚刚创建了一个 JSON 字符串并将其解析为一个对象以进行演示,但您将使用自己的对象。然后你只需要使用 jQuery 的$.each循环遍历它就可以了。让我知道它是否对您有帮助。

    let data = '{"names":[{"name":"Michael S."},{"name":"Jim H."},{"name":"Pam B."}]}'
    
    data = JSON.parse(data)
    
    let str = '';
    
    $.each(data.names, (key, val) => {
      str += '<ul><li>' + val.name + '</li></ul>'
    })
    
    $('#myDiv').empty().append(str)
    li {
      background-color: yellow;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <div id="myDiv">
    </div>


    推荐阅读