Json函数没有传递数组

时间:2014-09-20 06:01:21

标签: javascript php jquery json

var checkedValues = $('.required:checked').map(function () {
    return this.value;
}).get();

 $.getJSON('@Url.Action("testcata", "home")' +"?Type=" + "@(Session["typ"])" + "&city=" + "@(Session["cit"])" +  "&chkd=" + checkedValues,
 function (data) {
     //code
 })

在控制器中:

public ActionResult testcata(string Type, int? city, int[] chkd)
{
   //code
}

我正在尝试获取检查框的值以通过json函数。  为什么控制器中的方法将null作为多个选定检查值的参数?我在函数中有一个int [] chkd参数。它显示为null。

3 个答案:

答案 0 :(得分:1)

您正在尝试将数组作为字符串。试试这个:

var checkedValues = encodeURIComponent($('.required:checked').map(function(){
  return this.value;
}).get().join());

答案 1 :(得分:1)

请先将您的方法从GET转到POST,然后按照以下代码进行操作。

您现有的代码

var checkedValues = $('.required:checked').map(function () {
return this.value;
}).get();

要添加的新代码

var Data = new Object();
Data.Type = @(Session["typ"]);
Data.city = @(Session["cit"]);
Data.chkd = checkedValues;


$.ajax({
type: "POST",
url: "/home/testcata",
data: JSON.stringify(Data),
dataType: "json"
}).done(function(data){
// Required Code 
});

C#代码更改

public class Data
{
  string Type {get; set ;};
  int city {get; set ;};
  int[] chkd {get; set ;};
}


public ActionResult testcata(Data data)
{
   String Type = data.Type;
   int city =  data.city;
   int[] chkd = data.chkd; // Your Array will be successfully received here.
}

希望这会对你有所帮助,谢谢:) Happy Coding

答案 2 :(得分:0)

这是对代码的重新安排。

var checkedValues = $('.required:checked').map(function () {
    return this.value;
}).get();
//if you are getting correct values here than,

$.ajax({
    type: "POST",
    url: "/home/testcata",
    data: JSON.stringify({chkd: checkedvalues}),
    dataType: "json"
}).done(function(data){
  // your stuff
});

如果可能,使用[HttpPost]装饰您的控制器方法。尽管如此,与JSON数据进行通信仍然非常安全。 :)