我需要使用c#webforms代码获取jquery序列化数据 我这样试试:
jQuery.ajax({
type: "POST",
url: "book_de_acoes.aspx/salvarSimulacaoAutomatica",
data: JSON.stringify({ form: jQuery("#aspnetForm").serialize() }),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (callback) {
alert(callback);
}
});
c#代码背后:
[WebMethod(true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static bool salvarSimulacaoAutomatica(string form)
{
try
{
System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
var formData = js.Deserialize<object>(form);
}
catch(Exception e)
{
}
return true;
}
但是客场出现错误:
System.ArgumentException:无效的JSON原语:ctl00。在 System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject() 在 System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(的Int32 深度) System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(字符串 输入,Int32 depthLimit,JavaScriptSerializer序列化程序)at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer,String input,Type type,Int32 depthLimit)at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize [T](字符串 输入) PortalSuvinil.admin_portal.book.book_de_acoes.salvarSimulacaoAutomatica(字符串 形式)
获取此数据的正确方法是什么?
答案 0 :(得分:1)
这里的问题是jQuery.serialize()
不会创建JSON。它创建标准的表单url编码数据,如下所示:
'single=Single&multiple=Multiple&multiple=Multiple3&check=check2&radio=radio1'
这不会转换为任何有意义的JSON,因为它只是一个巨大的字符串。
诀窍是使用jQuery.serializeArray()
代替,这将生成一个可以序列化为JSON的对象。
[{name:'single',value:'Single'},{name:'multiple',value:'Multiple'}]
此链接可以向您展示如何在PageMethod:http://www.asp.net/ajaxlibrary/jquery_webforms_post_data_to_pagemethod.ashx
中处理该数据