2012-09-21 90 views
0

我想傳遞幾個參數到我的JSON回調,但是字符串[]參數仍然爲空。我如何需要從JavaScript傳遞字符串數組來獲得這個工作?如何傳遞字符串數組作爲JSON參數

Javscript功能:

function jsonCallback(jsonCallbackID, argumentsArray) { 
var argumentValues = []; 
for (var i = 0; i < argumentsArray.length; i++) { 
    argumentValues.push('' + $("#" + argumentsArray[i]).val()); 
} 

// build request 
var url = encodeURI("/DataEntry/JsonCallback/"); 
var data = ({ jsonCallbackID: jsonCallbackID, jsonCallbackValues: argumentValues, rndvalue: Math.floor(Math.random() * 10000000001) }); 

// fire request 
$.getJSON(url, data, function (data) {}); 

實際回調的C#功能:

 public JsonResult JsonCallback(int jsonCallbackID, string[] jsonCallbackValues) 
    { } 

此功能得到然而調用,參數 'jsonCallbackValues' 爲空。

編輯

得到這個工作我做了以下內容:

var data = ({ jsonCallbackID: jsonCallbackID, jsonCallbackValues: argumentValues.toString(), rndvalue: Math.floor(Math.random() * 10000000001) }); 

而且在拆分jsonCallbackValues串 「」 拿到結果數組。

+0

什麼是 「argumentValues」 的價值之前被髮送到服務? –

+0

argumentValues的值是:rgumentValues:數組[3] 0: 「1111aa」 1: 「BE」 2: 「24041」 長度:3 – Arthur

+0

是jsonCallbackID通過所有細發送? jsonCallbackvalues的序列化應該是我所能看到的。 –

回答

2

JSON是一種序列化語言,因此您不能將對象放入其中。

你應該建立自己的JSON格式的數組:

jsonCallbackValues: 「值1」, 「值2」 ...]

+0

謝謝!我曾嘗試過類似的解決方法,但從您的問題看來,這是我擁有的唯一選擇。 – Arthur

+0

^^很高興幫助 – spekdrum

3

你可以試用一下JSON API ...

var data = { 
    jsonCallbackID:jsonCallbackID, 
    jsonCallbackValues: JSON.stringify(argumentValues), 
    rndvalue: Math.floor(Math.random() * 10000000001) 
}; 
// your 
$.getJSON(url, data, function (data) {}); 
+0

我確實這樣做了,結果是jsonCallbackValues參數中的一個逗號分隔列表,從Spekdrum的答案下面猜測,這是要走的路。謝謝! – Arthur

2

嘗試這樣

var data = ({ jsonCallbackID: jsonCallbackID, jsonCallbackValues: $.toJSON(argumentValues), rndvalue: Math.floor(Math.random() * 10000000001) }); 
我從 http://code.google.com/p/jquery-json/使用JSON jQuery插件

在它 串jsonCallbackValuesArray

然後使用 JavaScriptSerializer orJSON.Net 將JSON字符串轉換成的String []控制器方法改變

+0

是的,這與上面的答案類似,我現在以類似的方式序列化/反序列化。但是謝謝你! – Arthur

相關問題