首页 新闻 赞助 找找看

ajax如何传一个数组到后台??????

0
[待解决问题]

如何把把这个在后台 接收了??

 

除了这样还可以 怎么接收如

s =“23-3-4-2”
String[] str = s.split("-");

 

孩丿的主页 孩丿 | 初学一级 | 园豆:134
提问于:2016-11-14 11:37
< >
分享
所有回答(5)
0

是.net MVC么?

十一一十三 | 园豆:247 (菜鸟二级) | 2016-11-14 11:39

是的 

支持(0) 反对(0) 孩丿 | 园豆:134 (初学一级) | 2016-11-14 11:56

@孩丿: mvc 你定义一个 传过去参数的实体,放在你api的方法内例如  接收的方法(实体  A)

 

class  实体

{

  public int [] Art..(){get;set;}

}

具体mvc的开发方式,还用Request  ,out了

支持(0) 反对(0) 十一一十三 | 园豆:247 (菜鸟二级) | 2016-11-14 14:39
0

context.Request["ArticleIDs"];

冷战 | 园豆:211 (菜鸟二级) | 2016-11-14 11:52

string[] ids= context.Request["ArticleIDs"].Split('-');

支持(0) 反对(0) 冷战 | 园豆:211 (菜鸟二级) | 2016-11-14 11:54

@冷战: 如何传过来是一个int类型烦人数组如何接收呢????

支持(0) 反对(0) 孩丿 | 园豆:134 (初学一级) | 2016-11-14 11:59

@冷战: int 类型的数组

支持(0) 反对(0) 孩丿 | 园豆:134 (初学一级) | 2016-11-14 12:03

没有-这个

支持(0) 反对(0) 孩丿 | 园豆:134 (初学一级) | 2016-11-14 12:08

@孩丿: 你就在前台把int数组拼装成string字符串,中间用逗号或横杠隔开,传到后台后再转换就可以了

支持(0) 反对(0) 冷战 | 园豆:211 (菜鸟二级) | 2016-11-14 12:18

@孩丿: 给你个网址参考参考https://zhidao.baidu.com/question/414418278.html

支持(0) 反对(0) 冷战 | 园豆:211 (菜鸟二级) | 2016-11-14 12:28
0

 

你试下这样:

1   char[] charArray = Request["ArticleIDs"].ToArray();

PS:如果是MVC的话

1.JsonResult可以处理传过来的参数,不需要通过Request["键名"]。

1 [HttpPost]
2 public Action 方法名(参数--和ajax传的参数名对应上)
3 {
4        // 可以再对参数值进行处理。
5 }

 

2.直接通过IO流获取json字符串(在前台传参前需先序列化,不然读取中文流会出现问题。)

1             string myJson = string.Empty;
2             using (System.IO.StreamReader sr = new System.IO.StreamReader(Requ              est.InputStream))
3             {
4                 myJson = sr.ReadToEnd();
5             }

 

希望能帮到你!

 

~扎克伯格 | 园豆:1923 (小虾三级) | 2016-11-14 12:18

第一个方法不行,若是你有 11 12呢

支持(0) 反对(0) 十一一十三 | 园豆:247 (菜鸟二级) | 2016-11-14 14:40

@~扎克伯格: 呃,不好意思,确实是这样的。。

支持(0) 反对(0) 十一一十三 | 园豆:247 (菜鸟二级) | 2016-11-14 14:53

若是,返回的字符串带有两个字符或者以上,就会被拆分掉吧?

支持(0) 反对(0) 十一一十三 | 园豆:247 (菜鸟二级) | 2016-11-14 14:54

@疯五五爱喝咖啡: 看你好像挺感兴趣的啊!其实像这种含有复杂类型的,在后台可以使用IO流处理,先在前台将数据序列化为json数据,再从后台反序列化下。贴段code看下吧!

 1             string myJson = string.Empty;
 2             using (System.IO.StreamReader sr = new System.IO.StreamReader(Request.InputStream))
 3             {
 4                 myJson = sr.ReadToEnd();
 5             }
 6             Test test = JsonSerializer.DeserializeFromString<Test>(myJson);//反发序列化为Test对象.
 7             int[] Ids = test.Ids;//获取复杂类型int数组的数据.
 8 
 9            public class Test 
10             {
11             public string ConsultantId { get; set; }
12 
13             public string LastName { get; set; }
14 
15             public string UnitId { get; set; }
16 
17             public int[] Ids { get; set; }
18 
19            }

前台数据的序列化可以自己处理下。

支持(0) 反对(0) ~扎克伯格 | 园豆:1923 (小虾三级) | 2016-11-14 21:28
0

mvc

action(int[] ArtcleIds )

czd890 | 园豆:14292 (专家六级) | 2016-11-14 13:09

亲测过int[]类型数据为null

支持(0) 反对(0) ~扎克伯格 | 园豆:1923 (小虾三级) | 2016-11-14 21:33

@~扎克伯格: 兄弟,那是你用错了而已

支持(0) 反对(0) czd890 | 园豆:14292 (专家六级) | 2016-11-14 23:36
@{
    ViewBag.Title = "action";
}

<h2>action</h2>

<a class="btn btn-default">Click Me</a>
@section js{
    <script>
        $(function () {
            $('a').click(function () {
                $.post('/home/action', { arr: [1, 2, 3, 4, 5] }, function (d) {
                    console.log(d);
                })
            });
        })
    </script>
}

支持(0) 反对(0) czd890 | 园豆:14292 (专家六级) | 2016-11-14 23:37

@calvinK: 大兄弟,楼主用的不是$.ajax这种请求方式吗?昨晚貌似找到答案了,ajax中有个参数traditional设置为true( 默认的话,traditional为false,即jquery会深度序列化参数对象,https://my.oschina.net/i33/blog/119506)。后台可以获取数组的数据。不过还是谢谢你的回复!

支持(0) 反对(0) ~扎克伯格 | 园豆:1923 (小虾三级) | 2016-11-15 10:13
0

如果就是id,你可以用逗号分隔。

顾晓北 | 园豆:10844 (专家六级) | 2016-12-01 10:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册