博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JQuery ajax 异步传一个数组到 .net后台
阅读量:4450 次
发布时间:2019-06-07

本文共 2941 字,大约阅读时间需要 9 分钟。

可能使用JQuery Ajax传值到后台一个字符串,或者序列化后的表单大家都使用过,但是某些项目,需要我们一次传值一个数组到后台,这个时候有什么好的办法呢?

1.JS将数组转换为一个字符串,然后传值到后台,不方便

  比如把一个[1,2,3,4,5]的数组,转换为一个 var str="1,2,3,4,5"; 的字符串 ,然后传递到后台后,再用.net的 split(',') 分离,这样用起来十分别扭,而且还要考虑数组中是否会存在分割字符串的问题

2.使用 JSON.stringify() 方法,方便,简单粗暴。

  昨天晚上小朱又遇到了提交数组的问题,于是和朋友小飞商量了下,之前知道JQuery 有 stringify() 这个方法,也一直不知道咋用,昨天小飞知道小朱这个问题后,教了下小朱这个方法,解决了提交数组的问题

  现学现卖,于是今天和园友们分享这个实用的方法

 

首先,引入必须的JQuery文件

 

 

 然后从你的页面中得到一个数组,这根据你的实际需求,可能是用户输入,或者自己从table表格里抓取

 

 比如小朱需要抓取类似 学号,当前边的checkbox被选中时候,就把这个学号,放在数组里

现在小朱得到了一个名字为 arrId 的数组,当然你也可以通过其它方法来拼凑自己的数组,这个不是本文的重点,本文的重点在下面,当你得到这个数组后,如后传递到后台,和后台交互

传递数组嘛,上文就是为了拼凑这样的一个数组:

得到这个数组后,我们使用ajax传递到后台:

//2.传后台                $.ajax({                    type: "Post",                    url: "manager.aspx/DeleteMore",                    data: JSON.stringify({ arr: arrId }),                    contentType: "application/json;charset=utf-8",                    dataType: "json",                    success: function (data) {                        if (data.d == "Y") {                            alert("批量删除成功!");                            window.location.reload();                        }                    }                });

 

所以,我们需要在本页后台,写一个WebMethod(我的这个页面名字叫做manage.aspx,请读者朋友根据自己的页面记得相应改动)

[WebMethod]        public static string DeleteMore(List
arr) { StringBuilder sb = new StringBuilder(); foreach (var item in arr) { sb.Append(item + ","); } sb.Remove(sb.Length - 1, 1); string sqlDelete = "UPDATE stuapply_Info SET Status=1 WHERE ApplyId IN (" + sb.ToString() + ")"; int r = DBUtility.DbHelperSQL.ExecuteSql(sqlDelete); if (r > 0) { return "Y"; } else { return "N"; } }

WebMethod需要引入命名空间:

using System.Web.Services;

 

那么,按F5就可以正常运行了。

 

 

===========总结============

 

上文可能说的比较啰嗦,因为小朱担心朋友们看不懂啦,下边简单做一个总结:

1.引入JS文件

2.拼凑出来一个数组

3.ajax后台交互

$.ajax({                    type: "Post",                    url: "页面名.aspx/load",                    data: JSON.stringify({ arr: arrId }),                    contentType: "application/json;charset=utf-8",                    dataType: "json",                    success: function (data) {                         alert("操作成功!");                        }                    }                });

4.后台引入命名空间,写WebMethod

[WebMethod]        public static string load(List
arr) { StringBuilder sb = new StringBuilder(); foreach (var item in arr) { sb.Append(item + ","); } sb.Remove(sb.Length - 1, 1); //sb.ToString() 为 1,2,3,4 可以用在SQL语句的WHERE ... IN ... //当然你也可以根据自己的业务逻辑不同,使用List
//记得最后要 return "Y"; }

 

把这个使用的方法记录下来,分享给朋友们,方便朋友们学习,方便自己以后查阅复习!

 

转载于:https://www.cnblogs.com/zhuhaoliang/p/5802753.html

你可能感兴趣的文章
webstorm上svn的安装使用
查看>>
【JEECG技术文档】数据权限自定义SQL表达式用法说明
查看>>
使用 Bootstrap Typeahead 组件
查看>>
第一次玩蛇,有点紧张。
查看>>
EF不能很好的支持DDD?估计是我们搞错了!
查看>>
ubuntu下基于sqlite3后台的php环境的搭建
查看>>
Qt 静态库与共享库(动态库)共享配置的一个小办法
查看>>
linux_cacti 配置之 安装snmp 服务
查看>>
201407-至今
查看>>
c# 应用事务
查看>>
优化杭州某著名电子商务网站高并发千万级大型数据库经验之- SQL语句优化(转)...
查看>>
DtCms.Model.Article.cs
查看>>
WPF——TargetNullValue(如何在绑定空值显示默认字符)
查看>>
Linux之crontab
查看>>
清除浮动
查看>>
JAVA优化建议
查看>>
Docker --- 安装MySQL
查看>>
CenOS+宝塔(模拟)上线博客项目
查看>>
Linux改变语言设置的命令
查看>>
loadrunner Vugen-Tools General-Options-Replay设置
查看>>