Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ajax将null发送到控制器,但可以使用硬编码变量_C#_Jquery_Ajax_Asp.net Mvc_Asp.net Ajax - Fatal编程技术网

C# ajax将null发送到控制器,但可以使用硬编码变量

C# ajax将null发送到控制器,但可以使用硬编码变量,c#,jquery,ajax,asp.net-mvc,asp.net-ajax,C#,Jquery,Ajax,Asp.net Mvc,Asp.net Ajax,我在vs代码中制作了一个简单的应用程序,我想将值保存到数据库中,这就是我到目前为止所做的 var naziv = $("#TextNaziv").val(); var cena = $("#TextCena").val(); var opis = $("#TextOpis").val(); //console.log("Cena:" + cena);

我在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 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;
            }
        }
}
public intubaciproizvod([FromBody]Proizvod p)
{
字符串upit=@“插入Proizvod值(@Naziv、@Cena、@Opis);
选择CAST(SCOPE_IDENTITY()作为int)”;
使用(SqlConnection-konekcija=newsqlconnection(konekcija.CnnMagacin))
{
尝试
{
int id=konekcija.QuerySingleOrDefault(upit,p);
返回id;
}
捕获(系统异常)
{
返回-1;
}
}
}

这是我的第一篇帖子,因此欢迎所有建议和批评,并对变量名表示歉意。

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

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

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

我建议您调试从请求返回的响应。话虽如此,我能看到的唯一区别是
val()
返回一个字符串,而在工作的硬编码版本中,您给
Cena
一个整数值。因此,您可能需要将其转换为整数:
Cena:parseInt(Cena,10)
非常有效,谢谢您,我的兄弟!,我像你建议的那样使用了“Cena:parseInt(Cena,10)”,它解决了所有问题。再次感谢你,小伙子,这很有帮助。我添加了它作为您的答案谢谢您的回答,但是现在您提到了SQL注入,我必须问您更多的问题,我知道它是什么,但是您确定上面的代码对SQL注入是开放的,因为我发现了在上插入值的完全相同的方法,我也看到了一些使用dapper这样的教程,sql查询中有参数,据我所知,Dapper是一个ORM,它映射实体属性和匹配的sql列。事实上,我很想念你,因为你在使用简洁的代码,并且误读了你的代码。我的错误。