2013-08-02 24 views
1

我需要得到一個jQuery的C#Web表單代碼序列化的數據背後 我嘗試這樣:得到蒙山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: Invalid JSON primitive: ctl00. at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject() at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth) at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer) at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit) at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input) at PortalSuvinil.admin_portal.book.book_de_acoes.salvarSimulacaoAutomatica(String form)

如何正確獲取此數據?

+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