我正在尝试将几个参数传递给我的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字符串拆分为“,”以获取生成的数组。
答案 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 []