Javascript 在asp.net中使用ajax在代码隐藏处调用方法
嘿,我正在制作一个简单的网页表单,它是一个产品细节插入网页。我正在尝试使用ajax调用插入。如果没有ajax,它就可以工作。。但是$.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
$(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);