0

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

Javascript函数:

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 字符串以获取结果数组。

4

3 回答 3

3

您可以尝试 JSON API ...

var data = {
   jsonCallbackID:jsonCallbackID,
   jsonCallbackValues: JSON.stringify(argumentValues),
   rndvalue: Math.floor(Math.random() * 10000000001)
};
// your 
$.getJSON(url, data, function (data) {});
于 2012-09-21T08:28:01.863 回答
2

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

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

jsonCallbackValues : ["value1", "value2"...]

于 2012-09-21T08:23:38.773 回答
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 或 JSON.Net 将 JSON 字符串转换为 String []

于 2012-09-21T08:36:50.767 回答