Javascript 在asp.net中使用ajax在代码隐藏处调用方法

Javascript 在asp.net中使用ajax在代码隐藏处调用方法,javascript,c#,jquery,asp.net,ajax,Javascript,C#,Jquery,Asp.net,Ajax,嘿,我正在制作一个简单的网页表单,它是一个产品细节插入网页。我正在尝试使用ajax调用插入。如果没有ajax,它就可以工作。。但是$.ajax没有调用我的静态方法背后的代码,不知道这是什么问题。代码如下: $(document).ready(function () { $("#submit").click(function () { var cat = document.getElementById('DropDownList1').value; var

嘿,我正在制作一个简单的网页表单,它是一个产品细节插入网页。我正在尝试使用ajax调用插入。如果没有ajax,它就可以工作。。但是$.ajax没有调用我的静态方法背后的代码,不知道这是什么问题。代码如下:

$(document).ready(function () {
    $("#submit").click(function () {
        var cat = document.getElementById('DropDownList1').value;
        var nm = document.getElementById('name').value;
        var cde = document.getElementById('code').value;
        var dt = document.getElementById('dt').value;

        var price = document.getElementById('price').value;
        var f3 = document.getElementById('ty').innerHTML;

        alert("you clicked " + cat + " - " + nm + "-" + cde + "-" + dt + 
                "-" + price + "-" + f3 +  "-");

       //////////////uptil here alert gives the right value.

       $.ajax({
           method: "POST",
           contentType: "application/json", 
           url: "home.aspx/ins",
           dataType: "json",
           data: "{'Name :' + nm + 'code :' + cde +'category :'+ cat + 
              'date :'+ dt +'price :'+ pr +'img_name :' + f3}",
           //data:"{}",
           //async: false,
           success: function (response) {
               alert("User has been added successfully.");
               window.location.reload();
           }
       });
    })
});


我认为问题在于您的数据被传递:

data: "{'Name :' + nm + 'code :' + cde +'category :'+ cat +'date :'+ dt +'price :'+ pr +'img_name :' + f3}"
我认为有两个可能的问题。首先,您的“+”在那里被视为文本,因为它们被永远不会转义的双引号包围。我相信,你们正在努力实现的目标是:

data: "{'Name :'"+ nm +"'code :'"+ cde +"'category :'"+ cat +"'date :'"+ dt +"'price :'"+ pr +"'img_name :'"+ f3 +"}"
然而,这仍然有一个潜在的问题,因为我相信json的格式会不正确。json字符串(至少包含字符串变量)的预期语法为“{“key1”:“value1”,“key2”:“value2”}”

确保您的权利和节省您自己工作的更好方法是使用JSON.stringify为您完成工作

var temp = {};
temp.Name = nm;
temp.code = cde;
temp.category = cat;
temp.date = dt;
temp.price = pr;
temp.img_name = f3;
var data = JSON.stringify(temp);

通过webmethod将数据传递给ajax post的正确方法如下所示

var params=“{'Name':'“+nm+”,'code':“+cde+”,'category':“+cat+”,'date':“+dt+”,'price':“+pr+”,'img_Name':“+f3+”}
//以上声明
$.ajax…


data:params,
//在上面的
$中使用。ajax…

可能是数据输入的问题。尝试将输入构建为javascript对象,然后使用JSON.stringify(变量)将其转换为字符串,这样既安全又省力。仔细看,我相信这是你的问题。您正在尝试在字符串中连接。在执行+之前,您不能终止“”。在任何情况下,JSON.stringify()通常都比较干净。oka会尝试使用它。。。但输入工作正常,因为我已经在警报中获取了值。oka Thanksy您的警报可以正常工作,因为您在那里正确连接(“某物”+“某物”)。但在你的数据中,你正在做。“'something'+变量+'something other'”。这里的字符串附件是“”,而不是“”,因此在这种情况下,它必须是(“'something'”+“'something other'))。因此,本质上就像您现在在数据部分中一样,+被视为文本,而不是运算符。@Kam在警报之后,定义
var data={'Name':nm,'code':cde,'category':cat,'date':dt,'price':pr,'img_Name':f3}
然后在ajax中,执行
data:data
看看是否有效。谢谢。。。有一件事。如何在我的代码隐藏静态方法中访问此临时变量。。我无法访问它。我不熟悉asp,因此不确定您将如何访问后端的输入。一旦向后端发出请求,它应该与向服务器发出的任何其他post请求相同。你可以用同样的方式访问它。在这一点上没有“temp”变量,只有提供给post的内部变量是有帮助的。告诉我如何在代码隐藏静态方法中访问参数。方法参数和如何使用in-params访问参数应该与wat类似。thanks@Kam这与您使用/声明的问题相同,代码隐藏中的param没有更改。
var temp = {};
temp.Name = nm;
temp.code = cde;
temp.category = cat;
temp.date = dt;
temp.price = pr;
temp.img_name = f3;
var data = JSON.stringify(temp);