Member 14769019 Ответов: 1

Как я могу получить значения элементов в javascript


Я пытался построить свою социальную сеть, такую как Twitter. Я хочу, чтобы мне нравилось с JSON. У меня есть модель этого типа-список. Мне нужно получить идентификатор твита, чтобы понравиться методу, но я не могу. Мне может понравиться первый твит,который получит первый идентификатор твита на главной странице , а затем может получить другой идентификатор твита. Если мне не нравится первый твит на главной странице, я не могу любить другие твиты. Пожалуйста, помогите мне.

<pre> public async Task<IActionResult> AddLike(Guid id)
        {
            JsonLikeVM js = new JsonLikeVM();
            Tweet tweet = uow.Tweet.GetById(id);
            AppUser user = await userManager.FindByNameAsync(User.Identity.Name);
            if (!(uow.Like.Any(x => x.UserId == user.Id && x.TweetId == tweet.Id)))
            {
                Like like = new Like();
                like.TweetId = tweet.Id;
                like.UserId = user.Id;
                uow.Like.Add(like);
                uow.SaveChange();
                js.likes = uow.Like.FindByList(x => x.TweetId == tweet.Id).Count();
                return new JsonResult(js);
            }
            else
            {
                Like like = uow.Like.Find(x => x.TweetId == tweet.Id && x.UserId == user.Id);
                uow.Like.Delete(like);
                uow.SaveChange();
                js.likes = uow.Like.FindByList(x => x.TweetId == tweet.Id).Count();
                return new JsonResult(js);
            }
        }


$('#like').click(function () {
           var id = document.getElementById("item").value;
               $.ajax({
               type: 'POST',
               url: '/Member/Like/Addlike/' + id,
               success: function (result) {
                   var s = result.likes + ' ' + 'Like';
                   $('#result').html(s);
               }
           });



       });


<pre> <a id="like">
            <input type="hidden" value="@item.Id" id="item" />
            <svg class="bi bi-heart" width="1em" height="1em" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
                <path fill-rule="evenodd" d="M10 4.748l-.717-.737C7.6 2.281 4.514 2.878 3.4 5.053c-.523 1.023-.641 2.5.314 4.385.92 1.815 2.834 3.989 6.286 6.357 3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.837-3.362.314-4.385-1.114-2.175-4.2-2.773-5.883-1.043L10 4.748zM10 17C-5.333 6.868 5.279-1.04 9.824 3.143c.06.055.119.112.176.171a3.12 3.12 0 01.176-.17C14.72-1.042 25.333 6.867 10 17z" clip-rule="evenodd"></path>
            </svg>
        </a>
        @item.Likes.Count()


Что я уже пробовал:

Я много чего перепробовал, но не могу. Что я могу сделать ?

1 Ответов

Рейтинг:
8

Richard Deeming

Идентификаторы в HTML - документе должны быть уникальными. Из вашего описания следует, что вы используете один и тот же блок HTML для нескольких элементов, который генерирует несколько элементов с одним и тем же идентификатором.

Вам нужно будет изменить способ создания и обработки HTML-кода.

<a class="like" href='@Url.Action("AddLike", "Like", new { item.Id })'>
    <svg ...>
        ...
    </svg>
    <span class="like-count">@item.Likes.Count()</span> likes
</a>
$(document).on("click", "a.like", function(e){
    e.preventDefault();
    
    var me = this;
    $.post(this.href).then(function(result){
        $(me).find("span.like-count").text(result.likes);
    });
});


Member 14769019

Спасибо, что это работает!!