可能使用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 - 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<string> 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<string> //記得最后要 return "Y"; }
把這個使用的方法記錄下來,分享給朋友們,方便朋友們學習,方便自己以后查閱復習!
