【发布时间】:2013-05-14 22:46:50
【问题描述】:
我想将 json 对象传递给 aspx 页面中的 WebMethod
这是我的 jquery 和 WebMethod
$("#button-login").bind({
Click: accountRegister
});
function accountRegister(e) {
var dataObj = $("#login input[type]").serializeArray();
var obj = JSON.stringify(dataObj);
$.ajax({
type: "POST",
url: "Checkout.aspx/login",
data: obj,
contentType: "application/json; charset=UTF-8",
dataType: "json",
beforSend: function () {
$(this).attr("disabled", "true");
$(this).after(waitObj);
},
success: function (msg) {
// Replace the div's content with the page method's return.
alert("success");
$("#checkout").slideUp("slow");
$("#payment-address").slideDown("slow");
},
error: function (msg) {
//alert(msg);
},
complete: function (jqxhr,status) {
alert("Type:" + $.type(jqxhr) + "\n Respons text: " + jqxhr.responseText + "\n status: " + status);
$(this).attr("disabled", "false");
$(".wait").remove();
},
});
}
我的 checkout.cs 文件
namespace Ahooratech
{
public partial class Checkout : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static string login(string obj)
{ return "{data:data}";}
}
我得到了这个错误:
回复文本:{"Message":"Type \u0027****System.Collections.Generic.IDictionary`2****[[System.String, mscorlib,版本=4.0.0.0,文化=中性, PublicKeyToken=b77a5c561934e089],[System.Object, mscorlib, 版本=4.0.0.0,文化=中性, PublicKeyToken=b77a5c561934e089]]\u0027 不支持 数组的反序列化。",
“堆栈跟踪”:“在 System.Web.Script.Serialization.ObjectConverter.ConvertListToObject(IList 列表,类型类型,JavaScriptSerializer 序列化程序,布尔值 throwOnError, IList\u0026 转换列表)\r\n at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(对象 o, Type type, JavaScriptSerializer 序列化器, Boolean throwOnError, 对象\u0026 转换的对象)\r\n 在 System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(对象 o, Type type, JavaScriptSerializer 序列化器, Boolean throwOnError, 对象\u0026 转换的对象)\r\n 在 System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer 序列化程序、字符串输入、类型类型、Int32 depthLimit)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](字符串 输入)\r\n 在 System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext 上下文,JavaScriptSerializer 序列化程序)\r\n at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData 方法数据,HttpContext 上下文)\r\n 在 System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext 上下文,WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}
编辑:错误代表一个类型castiny,但这个铸件在哪里? (我认为 JQuery 中存在隐式类型转换)
编辑:这是我发送到服务器的 json 格式的 obj 内容
"[{"name":"userName","value":"admin"},{"name":"password","value":"admin_"}]"
我认为这行 accountRegister() 是这样的:
var obj = JSON.Stringify({data:dataObj});
并在 WebMethod 中修改为:
public static string void login(Object data) {
}
它有效!
但我怎么能 id 反序列化 数据
【问题讨论】:
标签: jquery asp.net ajax json webmethod