Невозможно вызвать api из клиентского скрипта

Я написал следующий код для вызова API из клиентского скрипта.

Cshtml

<button class = "btn btn-link btn-sm js-toggleFollowing" data-user-id = "@gig.ArtistId">Follow</button>

Вызов API:

$(".js-toggleFollowing").click(function (e)
{
    var button = (e.target);

    $.post("/api/followings", { followeeId: button.attr("data-user-id") })
    .done(function ()
    {
        button.text("Following");
    })
    .fail(function ()
    {
        alert("Something failed");
    })
});

Метод контроллера API

// Code for api call

[HttpPost]
public IHttpActionResult Follow(FollowingDto dto)
{
    var userId = User.Identity.GetUserId();

    if (_context.Followings.Any(f => f.FolloweeId == userId && f.FolloweeId == dto.FolloweeId.ToString()))
        return BadRequest("The Following alreday exists.");

    var following = new Following
    {
        FollowerId = dto.FolloweeId.ToString(),
        FolloweeId = userId
    };

    _context.Followings.Add(following);
    _context.SaveChanges();

    return Ok();
}

Класс DTO:

public class FollowingDto
{
    public int FolloweeId { get; set; }
}

Вызов API работает с почтальоном без преобразования параметра в DTO. Но это не работает, когда я использую dto в качестве параметра. Класс dto также копируется.

Пожалуйста, помогите мне решить эту проблему.

Вы включили случай верблюда? Где ваша карта маршрута? / api / followings?

wannadream 29.10.2018 02:45

что значит не умеет звонить? какая-нибудь ошибка? Можете ли вы сделать журнал внутри кнопки и внутри ajax? n также откройте консоль разработчика, проверьте вкладку сети, сработал ли щелчок?

Se0ng11 29.10.2018 02:46

Обычно параметры сообщения отправляются через тело запроса, поэтому вы должны добавить [FromBody], чтобы убедиться, что он будет правильно отображен public IHttpActionResult Follow([FromBody] FollowingDto dto)

Dinh Tran 29.10.2018 03:09

Вам не хватает $, здесь var button = (e.target); перед открытой скобкой.

Musa 29.10.2018 03:42

@Hooman Спасибо за ответ. Теперь вызов сработал, но в классе контроллера FolloweeId был равен нулю. Как followeeId будет преобразован в FollowDto. Что еще мне не хватает в коде?

PCDev 29.10.2018 06:18

ваша кнопка должна быть объектом jQuery, прежде чем вы сможете использовать функцию attr (). попробуйте это: var button = $ (e.target). Это то, что вам сказал Муса.

Hooman Bahreini 29.10.2018 06:35

@Hooman Большое спасибо.

PCDev 29.10.2018 10:35

Спасибо всем за ценные комментарии.

PCDev 29.10.2018 10:35
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
8
113
0

Другие вопросы по теме