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 - 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"; 
        }        

 

把這個使用的方法記錄下來,分享給朋友們,方便朋友們學習,方便自己以后查閱復習!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM