Пост-глобальная функция ajax против повторения одной и той же функции для каждого запроса - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть кое-что, чего я не понимаю.У меня есть глобальная функция AjaxPost (), которая принимает URL и данные, а не отправляет их в бэкэнд.он вызывает функцию, но параметры всегда равны нулю.

Итак, я взял то же самое содержание функции и использовал его непосредственно в запросе, он отлично работает.этот не работает // пример: AjaxPost ("/ Road / DeleteRoad", дорога);

function AjaxPost(url, data) {
    return $.ajax({
        type: "post",
        url: url,
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        data: JSON.stringify(data)
    });
}

этот работает отлично

 $.ajax({
        type: "post",
        url: "/Road/DeleteRoad",
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        data: JSON.stringify(road)
    });

Здесь метод действия

 [HttpPost]
    public async Task<IActionResult> DeleteRoad([FromBody]r road)
    {
        int.TryParse(road.RoadID, out int RoadID);
        if (RoadID > 0)
        {
            await _road.DeleteRoad(RoadID);
        }
        return RedirectToAction("Index");
    }

Вот класс r

  public class r
    {
        public string RoadID { get; set; }
    }

Здесь находится объект Road //, например:

  var road ={
    RoadID :4,
    }

1 Ответ

0 голосов
/ 15 февраля 2019

Может быть, вы неправильно передаете параметр дороги?

Следующий код работает, отправляя два вызова на сервер.Сервер правильно извлекает значение RoadID .Вот javascript:

"use strict";

$(document).ready(() => {
    var road = { RoadID: 4 };

    // First call
    $.ajax({
        type: "post",
        url: "/home/DeleteRoad",
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        data: JSON.stringify(road)
    });

    // Second call
    ajaxPost("/home/DeleteRoad", road);
}

function ajaxPost(url, data) {
    return $.ajax({
        type: "post",
        url: url,
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        data: JSON.stringify(data)
    });
}

Код C #:

public class Road
{
    public string RoadID { get; set; }
}

[HttpPost]
public async Task<ActionResult> DeleteRoad([System.Web.Http.FromBody]Road road)
{
    Debug.WriteLine($"Road ID = { road.RoadID }");
    return RedirectToAction("Index");
}

Вывод сервера:

Road ID = 4
Road ID = 4

Надеюсь, это поможет:)

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