如何将字符串数组作为JSON参数传递

时间:2012-09-21 08:15:31

标签: c# jquery json

我正在尝试将几个参数传递给我的JSON回调,但是string []参数仍为null。我如何从javascript传递字符串数组才能使其正常工作?

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字符串拆分为“,”以获取生成的数组。

3 个答案:

答案 0 :(得分:3)

您可以尝试使用JSON API ...

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

答案 1 :(得分:2)

JSON是一种序列化语言,因此您无法将对象放入其中。

您应该以JSON格式构建数组:

jsonCallbackValues:[“value1”,“value2”...]

答案 2 :(得分:2)

试试这个

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

我使用了http://code.google.com/p/jquery-json/

中的JSON jQuery插件

在控制器方法中将其更改为     string jsonCallbackValuesArray

然后使用     JavaScriptSerializer或JSON.Net 将JSON字符串转换为String []