2010-06-30 51 views
0

我目前有一個如下的JQuery Ajax方法;在ASP.NET中使用JQuery AJAX發佈JSON數據的推薦方法是什麼?

$.ajax({ 
type:"POST", 
url: "default.aspx/UpdateData", 
data: jsonString, 
contentType: "application/json; charset=utf-8", 
dataType: "json", 
success: function(msg){ 
    alert('saved'); 
} 
}); 

在我使用的ASP.NET UpdateData方法中;

System.IO.StreamReader sr = new System.IO.StreamReader(Request.InputStream); 
string line = sr.ReadToEnd(); 

然後我會使用DataContractJsonSerializer將這些數據序列化。

正在使用Request.InputStream正確的方式來讀取JSON數據?我可以將它作爲方法參數或其他任何可能被認爲更好的方法來檢索嗎?

謝謝

回答

1

您可以檢索張貼的方法參數的數據:

JS:

$.ajax({ 
    url: "default.aspx/UpdateData" 
    data: '{ testString: "test", testInt: 123 }', 
    ... 
}); 

的Default.aspx:

[WebMethod] 
public static void UpdateData(string testString, int testInt) 
{ 
    ... 
} 

我肯定會推薦這種方法,而不是解析張貼JSON。你可以在這裏得到一個更完整的例子:jQuery and ASP.NET AJAX PageMethods(見第二個例子)

+0

肖恩謝謝你。但是如果我的JSON是一個像這樣的數組呢? {「Location」:[{「lat」:453,「lng」:235},{「lat」:235,「lng」:245}]} 在這種情況下,我無法使用參數right ? – Sivakanesh 2010-06-30 08:32:39

+1

其實,你可以。該框架將反序列化複雜類型並將它們轉換爲指定的參數類型,而不僅僅是基本的字符串和整數。 不知道我應該把代碼放在一個commenet,但在其最簡單的形式: 如: 公共靜態無效的UpdateData(詞典 []的位置){ } 這將是比較容易的工作如果你有一個「位置」類,其屬性爲「lat」和「lng」。 如: 公共靜態無效的UpdateData(名單位置){ } {緯度:1,LNG:1}將反序列化爲類位置的新實例,和數組將反序列化到一個集合。 – 2010-06-30 09:28:26

+0

這就是它肖恩。使用Location對象接收JSON數據的快速測試非常有用。謝謝。 – Sivakanesh 2010-06-30 10:04:36

0

您應該發送一個POST變量的JSON數據。然後,您只需訪問請求變量集合並將值傳遞給解析方法即可。

相關問題