2012-11-20 59 views
0

我正嘗試在後面的代碼中將JavaScript數組傳遞給方法。問題是,我需要將int傳遞給數組。當我這樣做:嘗試將javascript數組和int傳遞給代碼隱藏

$.ajax({ 
       type: "POST", 
       url: webMethod, 
       data: JSON.stringify({ myArray : passedArray }), 

它的工作原理。但現在我似乎無法弄清楚如何將數組傳遞給後面的代碼和一個int。 我需要用數組傳遞這樣的:

"{'selectID' : '" + $("#ScarTattoos option:selected").val() 

,因爲我的方法外觀和數據:

public markItem getMarkNoID(int selectID, string[] person) 
{ 
} 

回答

4

您可以發送複合JSON對象,像這樣:

{ 
    myArray: passedArray, 
    selectID: $("#ScarTattoos option:selected").val() 
} 

在你的AJAX調用它傳遞給JSON.Stringify兩者所需的對象將被髮送到服務器的處理程序。

您必須手動將其反序列化,除非您將其發送到Web服務,而Web服務通常基於參數名稱(在JSON模式下)執行反序列化。

+0

我的方法是一個web sservice – john

+2

然後確保JSON對象中的字段與方法參數具有相同的名稱 - 在您的情況下,選擇ID爲「selectID」,數組爲「person」。 –

1

不知道,你可以簡單的職位從一個jQuery AJAX方法背後的代碼。如果您使用MVC進行開發,那麼您可以發佈到控制器,但您似乎正在使用Web窗體。您可能會有更好的運氣將您的JSON數據保存到<asp:HiddenField />,然後發回。

通過在服務器上調用Page.ClientScript.GetPostBackEventReference()方法,然後將結果傳遞到客戶端JavaScript代碼以供以後調用,您可以獲得所需的Postback JavaScript代碼。

1

我會建議將數組和int添加到一個對象並對該對象進行字符串化。

var theID = $("#ScarTattoos option:selected").val(); 
var array = passedarray; 
var PassObj = { selectID: theID, person: array}; 
1

嘗試是這樣的:

var obj = { 
    selectID: parseInt($("#ScarTattoos option:selected").val(), 10), 
    myArray: passedArray 
}; 

$("#ScarTattoos option:selected").val()會給你一個字符串,所以你需要parseInt函數(),使其號碼類型。

Just JSON.stringify你的obj併發送它。

相關問題