Jquery.ajax 将 null 发送到控制器,但使用硬编码变量

Jquery.ajax sends null to controller, but works with hard-coded variables

我正在用 vs code 制作一个简单的应用程序,我想将值保存到数据库中,这就是我目前所做的。

 var naziv = $("#TextNaziv").val();
        var cena = $("#TextCena").val();
        var opis = $("#TextOpis").val();

        //console.log("Cena:" + cena);
       // console.log("Opis:" + opis);
       // console.log("Naziv:" + naziv);

        var proizvod = {
            Naziv: "nazivTest123",
            Cena: 33,
            Opis: "opisTest123"
        }

       // console.log(proizvod);
        var zahtev = $.ajax({
            type: "POST",
            url: "/Home/UbaciProizvod",
            data: JSON.stringify(proizvod),
            contentType: "application/json",
            dataType: "text",

        });

这工作正常,没有任何问题,但是当我将 var proizvod 更改为:

var proizvod = {
     Naziv: naziv,
     Cena: cena,
     Opis: opis
        }

应用程序不会将值保存到数据库中,即使我在控制台中检查过并且值很好,控制器接收到空值。我尝试了我在互联网上看到的一切,但似乎没有任何帮助,也许是一些小问题,但我无法解决,我的控制器功能如下所示:

public int UbaciProizvod([FromBody] Proizvod p )
{
    string upit = @"INSERT INTO Proizvod VALUES(@Naziv,@Cena,@Opis);
                            SELECT CAST(SCOPE_IDENTITY() AS int)";

        using(SqlConnection konekcija = new SqlConnection(Konekcija.CnnMagacin))
        {
            try
            {
                int id = konekcija.QuerySingleOrDefault<int>(upit,p);
                return id;

            }
            catch (System.Exception)
            {
                
               return -1;
            }
        }
}

这是我的第一个 post 所以欢迎每一个建议和批评,对变量名表示抱歉。

这两个版本的区别在于,您在工作版本中提供 Cena 作为整数值,但在非工作版本中提供字符串。

要在发出 AJAX 请求之前修复此调用 parseInt() 的值:

var proizvod = {
  Naziv: naziv,
  Cena: parseInt(cena, 10),
  Opis: opis
}