JQuery ajax 异步传一个数组到 .net后台
可能使用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<string> arr)
{
StringBuilder sb = new StringBuilder();
foreach (var item in arr)
{
sb.Append(item + ",");
}
sb.Remove(sb.Length - , ); string sqlDelete = "UPDATE stuapply_Info SET Status=1 WHERE ApplyId IN (" + sb.ToString() + ")"; int r = DBUtility.DbHelperSQL.ExecuteSql(sqlDelete); if (r > )
{
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<string> arr)
{
StringBuilder sb = new StringBuilder();
foreach (var item in arr)
{
sb.Append(item + ",");
}
sb.Remove(sb.Length - , ); //sb.ToString() 为 1,2,3,4 可以用在SQL语句的WHERE ... IN ... //当然你也可以根据自己的业务逻辑不同,使用List<string> //记得最后要 return "Y";
}
把这个使用的方法记录下来,分享给朋友们,方便朋友们学习,方便自己以后查阅复习!
JQuery ajax 异步传一个数组到 .net后台的更多相关文章
- jQuery ajax如何传多个值到后台页面,举例:
一.js代码 <script type="text/JavaScript">$("#save_change_<{$aff.Id}>"). ...
- IE8/9 JQuery.Ajax 上传文件无效
IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...
- Jquery Ajax 异步设置Table中某列的值
可根据table中某列中的ID去改变某列的值! 只是参考,实际应用中不能这样做的,如果有很多行,频繁访问服务器,服务器是顶不住的! JS: $(document).ready(function () ...
- 使用 jQuery Ajax 异步登录,并验证用户输入信息(maven)
使用 jQuery Ajax 异步登录,并验证用户输入信息(maven) 本篇内容: (1)上一篇是使用同步的请求实现登录,并由 Servlet 决定登陆后下一步做哪些事情,本篇使用 jQuery A ...
- jQuery ajax上传文件实例
jQuery ajax上传文件实例 <form id="form" enctype="multipart/form-data"><input ...
- jQuery Ajax(异步请求)
jQuery异步请求 原始的异步请求是需要创建的 XMLHttpRequest 对象.(IE5,6不支持)目前很多浏览器都支持XMLHttpRequest对象 jQuery ajax常用的回调函数:b ...
- jquery ajax异步调用
写程序的第一步都要知其然,至于知其所以然就要看个人的爱好了.下面说一下web开发中经常用的ajax. 这里是用的jquery框架实现的ajax异步调用.废话少说先上代码.(asp.net开发) var ...
- JQuery $.ajax(); 异步访问完整参数
$.ajax 完整参数 jquery中的ajax方法参数 url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post ...
- jquery Ajax异步请求之session
写了一个脚本,如下: $(function () { $("#btnVcode").click(function () { var receiveMobile = $(" ...
随机推荐
- 基于注解的Spring AOP的配置和使用
摘要: 基于注解的Spring AOP的配置和使用 AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向切面编程.可以通过预编译方式和运行期动态代理实现在不 ...
- JS实现页面打印
[原文链接] 1.js实现(可实现局部打印) <input id="btnPrint" type="button" value="打印" ...
- ssh 登录
一.ssh登录过程 在实际开发中,经常使用ssh进行远程登录.ssh 登录到远程主机的过程包括: 版本号协商 密钥和算法协商 认证 交互 1.1 版本号协商阶段 (1) 服务端打开22端口(也可以为了 ...
- 【A Global Line Matching Algorithm for 2D Laser Scan Matching in Regular Environment】
只看了前面的部分,灭有看实验,觉得整体风格比较傻白甜,与我的想法不谋而合.简单明了,用起来应该比较方便. 初步探测:如果有直线,就给线性插值一下. 分级聚类:利用简单的阈值给聚类了一下,分成了段段. ...
- //解决validator验证插件多个name相同只验证第一的问题
//解决validator验证插件多个name相同只验证第一的问题 var validatorName = function () { if ($.validator) { $.validator.p ...
- UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...
- centos 安装mongodb
原文引用:http://blog.chinaunix.net/uid-24250828-id-3770298.html 官方网站: http://www.mongodb.org/ MongoDB 安裝 ...
- HashMap,LinkedHashMap,TreeMap的区别
Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复. Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很 ...
- call 和 apply使用
call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向.因为 JavaScript 的函数存在「定义时上下文」 ...
- DevExpress实现为TextEdit设置水印文字
本文实例展示了DevExpress实现为TextEdit设置水印文字的方法,是一个很实用的技巧.分享给大家供大家参考. 转自 http://blog.csdn.net/yh0503/article/d ...