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



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

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 proizwood更改为:时

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

应用程序不会将值保存到数据库中,即使我在控制台中检查了这些值,并且这些值很好,控制器也会收到null值。我尝试了我在互联网上看到的一切,但似乎都无济于事,也许是一些小问题,但我无法解决,我的控制器功能看起来是这样的:

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;
}
}
}

这是我的第一篇帖子,所以欢迎所有的建议和批评者,并对可变名称感到抱歉。

这两个版本的区别在于,在工作版本中,Cena是一个整数值,而在非工作版本中是一个字符串。

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

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

最新更新