Jquery 如何将jsonObject和json数组作为ajaxdata传递给Asp.net
假设我有一个json对象和一个json数组。我需要它将这些作为ajaxdata传递到asp.net 下面是myCode代码Jquery 如何将jsonObject和json数组作为ajaxdata传递给Asp.net,jquery,json,webforms,Jquery,Json,Webforms,假设我有一个json对象和一个json数组。我需要它将这些作为ajaxdata传递到asp.net 下面是myCode代码 function insertNewBookingInfo(jsonstaticobj1232, jsonarray646) { try { debugger; //jsonstaticobj1232 is a json object //jsonarray646 is a json array
function insertNewBookingInfo(jsonstaticobj1232, jsonarray646) {
try {
debugger;
//jsonstaticobj1232 is a json object
//jsonarray646 is a json array
var dataAjax = { "jsonstaticobj1232": jsonstaticobj1232, "jsonarray646": jsonarray646 };
console.log(JSON.stringify(dataAjax));
jQuery.ajax({
url: 'WalkReserve.aspx/insertNewBookingInfo',
type: "POST",
data: JSON.stringify(dataAjax),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
debugger;
console.log(data.d);
},
error: function (result) {
debugger;
console.log('Failed' + result.responseText);
}
});
} catch (e) {
debugger;
console.log(e.message);
alert(e.message);
}
}
服务器代码
[WebMethod]
public static string insertNewBookingInfo(string jsonstaticobj1232, string jsonarray646) //, string jsonarray646
{
// BAL.insertNewBookingInfo(jsonstaticobj1232, jsonstaticobj1232); //, jsonarray646
return "ABC";
}
现在我得到了这个错误
问题是什么。我遗漏了什么吗???你为什么不在客户机中字符串化你的数据,并在服务器上反序列化 在客户端:
data: JSON.stringify(dataAjax)
和在服务器中:
System.Web.Script.Serialization.JavaScriptSerializer o = new System.Web.Script.Serialization.JavaScriptSerializer();
o.Deserialize<MyClass>(stringified_dataAjax);
//OR
o.ConvertToType<MyClass>(stringified_dataAjax);
在服务器中,您传递的数据是
string
(JSON格式)
,如果您有这样的javascript对象,您需要将其转换为特定的类来访问您想要的typesafe属性
{name: "mark", age: 35}
当您对要更改为的对象进行字符串化时
"{"name":"mark","age":35}"
当您将其传递给服务器时,您需要将该字符串转换为一个类,以访问您想要的属性,为此,您需要创建一个服务器端类,其属性符合javascript对象属性的名称和类型,类似于
class anyClasName // it doesn't matter
{
public string name { get; set; } // the name of property must be exactly same as your javascript object property
public byte age { get; set; } // and the type of property should be something which property of javascript object can be convert to
}
在am1r_5h的帮助下,形成更多帮助。我发现将传入数据类型更改为动态解决了我的问题
public static string insertNewBookingInfo(dynamic jsonstaticobj1232, dynamic jsonarray646)
{
// BAL.insertNewBookingInfo(jsonstaticobj1232, jsonstaticobj1232); //, jsonarray646
return "ABC2";
}
解决了我的问题。而且我在这里发布了一个关于使用
WebMethod
的答案,我认为这对您很有用,
首先,您有一个问题:您的JSON无效。JSON中的字符串用双引号括起来。感谢您指出这一点。我已经修复了它,但现在又出现了一个错误。我已经在这里发布了新的问题。您能解释一下除了创建类之外,在服务器上还需要做什么吗。假设“insertNewBookingInfo”是服务器中的函数名,因为我的注释中的字符太长,我必须将其作为答案发布,请参阅答案将字符串更改为动态解决了我的问题。谢谢你的帮助
public static string insertNewBookingInfo(dynamic jsonstaticobj1232, dynamic jsonarray646)
{
// BAL.insertNewBookingInfo(jsonstaticobj1232, jsonstaticobj1232); //, jsonarray646
return "ABC2";
}