2012-12-07 27 views
0

。 。如何在C#中反序列化在JQuery中序列化的東西?

自從我這樣做了一段時間,我試圖擺脫生鏽。

我想在ASP.NET中使用VS2010建立一個AJAX結構。

我有一個JQuery的表單提交,看起來是這樣的(大大簡化例如用途):

function FormSubmit() { 
    $.post('SomeHandler.asmx/SomeFunction', 
     $("#form1").serialize(), 
     function(data) {some data handler} 
    ); 
} 

我「SomeHandler.asmx/SomeFunction」是一個C#函數,接受我的表單數據並對其進行處理。

據我所知,SomeHandler.asmx假定XML反序列化,但JQuery將其序列化爲HTML編碼的字符串,而不是XML。

我想用一個比喻,一邊是用英語說話,另一邊是期待聽到法語。

我該如何解決這個問題? (舉例來說,假設我的表單有一個文本字段 - 我們將其稱爲「txtField」和一個下拉列表 - 我們稱之爲「lstDropDown」。)

在此先感謝您的幫助!

+0

那你究竟想要做什麼?只需在你的代碼中調用一個方法? – Schoof

+0

非常多,但它沒有調用涉及我的方法,而是傳遞數據。 –

+1

試試這個$阿賈克斯({ 類型: 'POST', 網址: 'SomeHandler.asmx/SomeFunction', 數據:$( 「#Form1的」)序列化(), 數據類型:。 'XML' }) ; – Jon

回答

1

在您的ASMX文件一定要使用你的Web方法接受以下屬性標誌和使用JSON迴應:

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public string SomeWebMethod() 
{ 
    //blah 
} 

此外,確保Web服務類有如下屬性標誌:

[System.Web.Script.Services.ScriptService] 
public class MyWebService : System.Web.Services.WebService 
{ 
... 
} 

最後一件事:如果你序列化在客戶端的數據,你需要使用下面的AJAX設置:

$.ajaxSetup({ contentType: "application/json; charset=utf-8" });