2012-10-03 79 views
1

我使用jQuery AJAX post請求將客戶端JS數組傳遞給服務器端VB.NET代碼。我有一種方法可行,但我想知道最佳做法。我一開始是這樣的:使用jQuery AJAX將JS數組傳遞給VB.Net post

JS:

var myArray=["Apple","Banana"]; 
$.ajax({url:"myhandler.ashx", 
     data:{"myArray":myArray.toString()}, type: "POST"}); 

VB:

Dim myArray as String() 
    = HttpContext.Request.Form("myArray").Split(New [Char]() {","c}) 

在JS,myArray.toString()我的數組轉換爲逗號分隔字符串 「蘋果,香蕉」,然後在VB中,Split將它轉換回一個字符串數組。

然後我發現ajax會自動爲您序列化數組。所以,我可以離開的ToString()關:

$.ajax({url:"myhandler.ashx", data:{"myArray":myArray}, type: "POST"}); 

當我這樣做,在VB身邊,我發現HttpContext.Request.Form不再有鑰匙「myArray的」它現在被稱爲「myArray的[ ]「,你看,它是一個逗號分隔的字符串:」Apple,Banana「。

這裏是我的問題:

1)是否有一個內置的方式在VB.NET反序列化的逗號分隔字符串轉換回一個字符串數組?

2)我的數組的Ajax序列化只是調用toString(),並且如果反序列化函數存在,它只是像我一樣調用Split()?

3)使用內建的序列化/反序列化除了標準之外是否有任何優勢?我可以想到一個缺點。我不喜歡它通過添加方括號來重新命名我的密鑰。

回答

0

陣列轉換爲JSON:

$.ajax({url:"myhandler.ashx", data:{"myArray":JSON.stringify(myArray)}, type: "POST"}); 

使用反序列化在.NET JSON數組Json.NET