Невозможно использовать jquery для публикации данных с помощью Web api

#jquery #asp.net #.net #api

#jquery #asp.net #.net #API

Вопрос:

Я не могу даже предупредить сообщение с помощью jQuery, что не так с моим кодом? Когда я использовал post man, я смог добавить в базу данных.

Я хочу использовать метод post, чтобы иметь возможность отправлять данные в базу данных

Вид:

 @model API.Models.Customers


@{
    ViewBag.Title = "New";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>New Form</h2>

<div id="container">
    <form>
        <div class="form-group" id="Name">
            @Html.LabelFor(m => m.Name)
            @Html.TextBoxFor(m => m.Name, new { @class = "form-control" })
        </div>

        <br />
        <p id="demo"></p>

        <button type="submit" class="btn btn-primary js-Add">Save</button>
    </form>
    </div>



    @section scripts {

    <script type="text/javascript">
        $(document).ready(function () {
            
            $("#container .js-Add").on("click", function () {
                var button = $(this);
                if (confirm("Are you sure you want to ADD this customer?")) {
                    var input = $("Name").val();
                    $.ajax({
                        url: "/api/Customer/CreateCustomer",
                        type: "POST",
                        data: input,
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (response) {
                            alert('HELLO'   response.Name);
                        }
                    });
                }
            });
        });
    </script>
}
 

КОНТРОЛЛЕР API:

 [HttpPost]
    public IHttpActionResult CreateCustomer(Customers CustomerDTO)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest();
        }
      
        _context.Customerss.Add(CustomerDTO);
        _context.SaveChanges();

        return Created(new Uri(Request.RequestUri   "/"   CustomerDTO.Id), CustomerDTO);

    }
 

КОНТРОЛЛЕР MVC

 public ActionResult New(Customers customers)
    {
       
        return View(customers);
    }
 

В чем проблема?

Комментарии:

1. вам необходимо отменить отправку формы.

2. консоль. ответ журнала

Ответ №1:

Пожалуйста, измените значение свойства div id на что-то другое, а не на Name. например, измените его на <div class="form-group" id="NameGroup"> then вы можете изменить свой JS-код на что-то вроде этого:

 $(function () {
            $("#container .js-Add").click(function (e) {

                e.preventDefault();

                if (confirm("Are you sure you want to ADD this customer?")) {

                    let personName = $("#Name").val();

                    $.ajax({
                        url: "/home/PostPerson",
                        type: "POST",
                        data: { Name: personName },
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (response) {
                            alert('HELLO'   response.Name);
                        }
                    });
                }
            });
        });
 

Не забудьте изменить размещенный объект на основе вашего объекта.

Ответ №2:

Ваш заголовок / тип содержимого должен соответствовать данным, которые вы публикуете. Поэтому, если вы преобразуете свои данные в JSON, это должно сработать. вы можете использовать JSON.stringify(your data)