Передача параметра в Web API с помощью ajax - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь передать параметр в мой веб-интерфейс, но почтовые запросы не проходят.Это работает просто отлично без параметра, но использование одного просто не работает.Я использовал тот же метод для передачи параметров в действие MVC, и это прекрасно работало, но API просто не принимает его.

VideoController:

    [HttpPost]
    public void LikeVideo(uint videoID)
    {

    }

Ссылка в html:

<a href="@Url.Action("LikeVideo", "Video", new { httpRoute = "DefaultApi"})" class="RateVideo">

Запрос Ajax:

    $(".RateVideo").click(function (e) {

    e.preventDefault();
    $.ajax({
        type: "POST",
        url: $(this).attr("href"),
        data: { videoID: 123},

    });

});

Заранее спасибо

Ян

Ответы [ 3 ]

0 голосов
/ 13 декабря 2018

Попробуйте следующий синтаксис:

$.ajax({
     url:'your url',
     type:'POST',
     data:JSON.stringify({videoID:123}),
     contentType: 'Application/json',
     success:function(result){
        //your code
     }
 });
0 голосов
/ 13 декабря 2018

Наконец-то, чтобы он заработал, мне пришлось настроить действие API следующим образом:

    [HttpPost]
    [Route("API/Video/LikeVideo")]
    public void LikeVideo([FromBody]uint videoID)
    {

    }

И ajax пришлось изменить следующим образом:

        $.ajax({
        type: "POST",
        url: $(this).attr("href"),
        data: JSON.stringify(@Model.VideoID),
        contentType: 'Application/json',
    });

Это работало так же, какскважина:

    var videoID = 123;

    e.preventDefault();
    $.ajax({
        type: "POST",
        url: $(this).attr("href"),
        data: JSON.stringify(videoID),
        contentType: 'Application/json',
    });
0 голосов
/ 13 декабря 2018

Если вы пытаетесь добраться до контроллера и отправить на него данные.Я хотел бы использовать эту структуру.

 //If 123 is an external parameter passed into the function 
 var json = '{videoID: ' + 123 + '}';

 $.ajax({
     url:'@Url.Action("LikeVideo", "Video")',
     type:'POST',
     data:json,
     contentType: 'Application/json',
     success:function(result){
         //Whatever
     }
 });

Вы также можете использовать Json.Stringify вместо того, чтобы делать то, что я сделал здесь для данных.

РЕДАКТИРОВАТЬ: Кроме того, void должен быть либо ActionResult, либоJsonResult.Не пустота

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...