Can';t将变量从jQueryAjax传递到C#代码隐藏
我不确定我做错了什么,但我无法让jQueryAjax调用正确地传递变量。它收到的很好。我可能忽略了一些小事。谢谢 (还有,有没有办法不使用[WebMethod]或通过URL以这种方式传递数据?)Can';t将变量从jQueryAjax传递到C#代码隐藏,c#,jquery,ajax,json,C#,Jquery,Ajax,Json,我不确定我做错了什么,但我无法让jQueryAjax调用正确地传递变量。它收到的很好。我可能忽略了一些小事。谢谢 (还有,有没有办法不使用[WebMethod]或通过URL以这种方式传递数据?) WebMethods必须是静态的 您的JSON输入应该是: var jsonInput = { 'json': 'XXXXXXX'}; 其中“json”等于webmethod参数的名称 在Ajax函数中 data:JSON.stringify(jsonInput) WebMethods必须是静态的
WebMethods必须是静态的 您的JSON输入应该是:
var jsonInput = { 'json': 'XXXXXXX'};
其中“json”等于webmethod参数的名称
在Ajax函数中
data:JSON.stringify(jsonInput)
WebMethods必须是静态的 您的JSON输入应该是:
var jsonInput = { 'json': 'XXXXXXX'};
其中“json”等于webmethod参数的名称
在Ajax函数中
data:JSON.stringify(jsonInput)
您可以更改方法以获取该值并将其附加到URL,如下所示
$.ajax({
type: "GET",
url: 'Default.aspx/test?json=' + 'thisisatest',
contentType: 'application/json; charset=utf-8',
success: function(msg) {
//$('#result').html(msg.d);
alert(msg.d)
},
error: function(msg) {
//$('#result').html(msg.d);
alert(msg.d + " err")
}
});
然后在你的代码后面
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentType = "application/json; charset=utf-8";
Response.Write(Request["json"]);
}
如果您打算这样做,我建议不要使用落后的代码,因为它们必须处理整个ASP.NET Web表单页面生命周期。您最好使用ASP.NET处理程序(ashx)
祝你好运 您可以更改方法以获取该值并将其附加到URL,如下所示
$.ajax({
type: "GET",
url: 'Default.aspx/test?json=' + 'thisisatest',
contentType: 'application/json; charset=utf-8',
success: function(msg) {
//$('#result').html(msg.d);
alert(msg.d)
},
error: function(msg) {
//$('#result').html(msg.d);
alert(msg.d + " err")
}
});
然后在你的代码后面
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentType = "application/json; charset=utf-8";
Response.Write(Request["json"]);
}
如果您打算这样做,我建议不要使用落后的代码,因为它们必须处理整个ASP.NET Web表单页面生命周期。您最好使用ASP.NET处理程序(ashx)
祝你好运 下面是我为您编写的一个完整示例,用于说明这个概念:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Services" %>
<script type="text/C#" runat="server">
public class MyModel
{
public string T1 { get; set; }
public string P1 { get; set; }
public string T2 { get; set; }
public string P2 { get; set; }
}
[WebMethod]
public static string Test(MyModel obj)
{
return "Hello from test";
}
</script>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
Type: 1: <input type="text" id="t1" />
Property 1: <input type="text" id="p1" />
<br /><br />
Type 2: <input type="text" id="t2" />
Property 2: <input type="text" id="p2" />
<input type="button" value="Add object!" id="button" />
<br /><br />
<div id="result"></div>
<script src="scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
$('#button').click(function () {
var data = JSON.stringify({
obj: {
t1: $('#t1').val(),
p1: $('#p1').val(),
t2: $('#t2').val(),
p2: $('#p2').val()
}
});
$.ajax({
url: 'default.aspx/test',
type: 'POST',
contentType: 'application/json',
data: data,
success: function(result) {
$('#result').html(result.d);
}
});
return false;
});
</script>
</body>
</html>
公共类MyModel
{
公共字符串T1{get;set;}
公共字符串P1{get;set;}
公共字符串T2{get;set;}
公共字符串P2{get;set;}
}
[网络方法]
公共静态字符串测试(MyModel obj)
{
返回“Hello from test”;
}
类型:1:
财产1:
第2类:
财产2:
$(“#按钮”)。单击(函数(){
var data=JSON.stringify({
obj:{
t1:$('#t1').val(),
p1:$('#p1').val(),
t2:$('#t2').val(),
p2:$('#p2').val()
}
});
$.ajax({
url:'default.aspx/test',
键入:“POST”,
contentType:'应用程序/json',
数据:数据,
成功:功能(结果){
$('#result').html(result.d);
}
});
返回false;
});
在这里,我将代码隐藏和标记混合在同一个
Default.aspx
文件中,但如果您愿意,显然可以将它们分开。下面是我为您编写的完整示例,以说明这一概念:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Services" %>
<script type="text/C#" runat="server">
public class MyModel
{
public string T1 { get; set; }
public string P1 { get; set; }
public string T2 { get; set; }
public string P2 { get; set; }
}
[WebMethod]
public static string Test(MyModel obj)
{
return "Hello from test";
}
</script>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
Type: 1: <input type="text" id="t1" />
Property 1: <input type="text" id="p1" />
<br /><br />
Type 2: <input type="text" id="t2" />
Property 2: <input type="text" id="p2" />
<input type="button" value="Add object!" id="button" />
<br /><br />
<div id="result"></div>
<script src="scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
$('#button').click(function () {
var data = JSON.stringify({
obj: {
t1: $('#t1').val(),
p1: $('#p1').val(),
t2: $('#t2').val(),
p2: $('#p2').val()
}
});
$.ajax({
url: 'default.aspx/test',
type: 'POST',
contentType: 'application/json',
data: data,
success: function(result) {
$('#result').html(result.d);
}
});
return false;
});
</script>
</body>
</html>
公共类MyModel
{
公共字符串T1{get;set;}
公共字符串P1{get;set;}
公共字符串T2{get;set;}
公共字符串P2{get;set;}
}
[网络方法]
公共静态字符串测试(MyModel obj)
{
返回“Hello from test”;
}
类型:1:
财产1:
第2类:
财产2:
$(“#按钮”)。单击(函数(){
var data=JSON.stringify({
obj:{
t1:$('#t1').val(),
p1:$('#p1').val(),
t2:$('#t2').val(),
p2:$('#p2').val()
}
});
$.ajax({
url:'default.aspx/test',
键入:“POST”,
contentType:'应用程序/json',
数据:数据,
成功:功能(结果){
$('#result').html(result.d);
}
});
返回false;
});
我在这里将代码隐藏和标记混合在同一个
Default.aspx
文件中,但如果您愿意,显然可以将它们分开。第一:数据:“ThisIsTest”不是JSON第二:显示您的代码如何接收和填充请求对象。我知道“ThisIsTest”不是JSON,我用一个简单的字符串注释掉了要测试的JSON,因为它不起作用。不确定第二部分的意思。第一:数据:“ThisisTest”不是JSON第二:显示您的代码如何接收和填充请求对象。我知道“ThisisTest”不是JSON,我用一个简单的字符串注释掉了JSON以测试,因为它不起作用。我不知道你说的第二部分是什么意思。它给了我一个AJAX错误,但没有达到那个代码。但是谢谢。@Ber53rker什么ajax错误?无论如何,如果webmethod不是静态的,那么它无论如何都不会工作。当我点击按钮时,它会说“undefined err”@Ber53rker尝试像在我的示例中那样做。它会给我一个AJAX错误,而不会到达该代码。但是谢谢。@Ber53rker什么ajax错误?无论如何,如果webmethod不是静态的,那么它无论如何都不会工作。当我点击按钮时,它会显示“undefined err”@Ber53rker尝试像我的示例中那样做。你知道我是否能够动态生成模型吗?你说的动态是什么意思?你的设想是什么?您需要向服务器发送哪些值?如果你说的“动态”是指集合,那么,你完全可以拥有集合对象的复杂属性,其中包含可变数量的元素。你知道我是否能够动态生成模型吗?你说的“动态”是什么意思?你的设想是什么?您需要向服务器发送哪些值?如果您所说的“动态”是指集合,那么,您完全可以拥有集合对象的复杂属性,其中包含可变数量的元素。