也正如好管理. 假若ajax请求相比多,然后传值到后台

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

1,既然要用WebMethod,这肯定就必需引用一下命名空间了

公海赌船备用网址 1

例如后台的主意如下:

现行小朱拿到了一个名字为 arrId
的数组,当然你也足以因此其他方法来拼凑自己的数组,这一个不是本文的紧要,本文的首要在下边,当你拿走这么些数组后,如后传递到后台,和后台交互

前日大家可以借助webMethod方法来使ajax实现起来更为简明

  前些天晌午小朱又遇上了付出数组的问题,于是和恋人小飞研究了下,此前知道JQuery
有 stringify()这一个法子,也直接不精通咋用,前几日小飞知道小朱这些题材后,教了下小朱那一个主意,解决了交给数组的问题

这边对Jquery的Ajax多少个参数做一下简短的证实,type:请求的类型,这里不可不用post
。WebMethod方法只接受post类型的请求

 

一旦您写的不是字符串,这jquery会把它实体系化成字符串,那么在服务器端接受到的就不是json格式了,且不可能为空,尽管没有参数也要写成”{}”,如上例。很两人不成功,原因就在此处。

 //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();
                        }

                    }
                });

data:参数列表。注意,这里的参数一定如果json格式的字符串,记住是字符串格式,如:”{aa:11,bb:22,cc:33
, …}”。

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

 

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

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

 

把这些应用的法子记录下来,分享给爱人们,方便朋友们上学,方便温馨之后翻看复习!

 

var result = Invoke("WebMethodAjax.aspx/GetMissionInfoById", { "name": arguments.Value, "id": id }); 
using System.Web.Services;

好了,这样我们呼吁webmethod方法 就足以这样调用了:

收获这多少个数组后,我们拔取ajax传递到后台:

咱俩在前台的调用就比较简单了.

[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";
            }
        }
/// <summary> 
/// 根据任务ID获取任务名称,任务完成状态,任务数量 
/// </summary> 
/// <param name="id">任务ID</param> 
/// <returns></returns> 
[WebMethod] 
public static string GetMissionInfoById(int id) 
{ 
CommonService commonService = new CommonService(); 
DataTable table = commonService.GetSysMissionById(id); 
    //..... 
return "false"; 
} 

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

///<summary> 
///jQuery原型扩展,重新封装Ajax请求WebServeice 
///</summary> 
///<param name="url" type="String">处理请求的地址</param> 
///<param name="dataMap" type="String">参数,json格式的字符串</param> 
///<param name="fnSuccess" type="Function">请求成功后的回调函数</param> 
$.ajaxWebService = function(url, dataMap, fnSuccess) { 
$.ajax({ 
type: "POST", 
contentType: "application/json", 
url: url, 
data: dataMap, 
dataType: "json", 
success: fnSuccess 
}); 
} 

 

contentType:发送信息至服务器时内容编码类型。我们这边肯定要用application/json

 

在这边,为便于开发,我新建了一个页面专门用于写WebMethod方法.这样会相比较便宜,也正如好管理. 假若ajax请求相比较多,能够多建多少个页面.依照页面的称谓来作下请求的归类
例,上边贴出后台代码:

 

function json2str(o) { 
var arr = []; 
var fmt = function(s) { 
if (typeof s == 'object' && s != null) return json2str(s); 
return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s; 
} 
for (var i in o) arr.push("'" + i + "':" + fmt(o[i])); 
return '{' + arr.join(',') + '}'; 
} 
function Invoke(url, param) { 
var result; 
$.ajax({ 
type: "POST", 
url: url, 
async: false, 
data: json2str(param), 
contentType: "application/json; charset=utf-8", 
dataType: "json", 
success: function(msg) { 
result = msg.d; 
}, 
error: function(r, s, e) { 
throw new Error(); 
} 
}); 
return result; 
} 

公海赌船备用网址 2

上面再贴一种包装,是先前跟一主任时,看的她的封装.觉得还不易

恐怕利用JQuery
Ajax传值到后台一个字符串,或者连串化后的表单我们都施用过,不过一些品种,需要我们五回传值一个数组到后台,这几个时候有什么样好的艺术吧?

以上所述是小编给大家介绍的采纳Jquery Ajax
请求webservice来实现更简短的Ajax,希望对我们享有援助,假设我们有此外疑问请给本人留言,小编会及时回复我们的。在此也分外感谢我们对台本之家网站的辅助!

 

url:请求的劳务器端处理程序的门路,格式为”文件名(含后缀)/方法名”

公海赌船备用网址 3

你或许感兴趣的作品:

这就是说,按F5就能够正常运作了。

第一也是建一个js文件,文件名随你们起了.我这里就建了一个CommonAjax.js里面多少个艺术,看上面代码:

WebMethod需要引入命名空间:

2.既然后台的WebMethod方法都早已写好了.就差着调用了.这里就用JQuery吧.相比简略

  现学现卖,于是明日和园友们享受这个实用的不二法门

$.ajax({ 
type: "POST", 
contentType: "application/json", 
url: "WebMethodAjax.aspx/GetMissionInfoById", 
data: "{id:12}", 
dataType: "json", 
success: function() 
   { 
     //请求成功后的回调处理. 
   }, 
   error:function() 
{ 
//请求失败时的回调处理. 
} 
}); 

 

可是尽管用这么情势的话.在给后台WebMethod方法传参时要留心一点.Json的key必须跟WebMethod方法的形参一样,还有参数的逐条不可乱.否则会呈请失败.

 

using System.Web.Services;

公海赌船备用网址 4

[csharp] view plain copy print?
{"Id":23,"name":"study"} 

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

$.ajaxWebService("WebMethodAjax.aspx/GetMissionInfoById", "{id:12}", function(result) {//......}); 

 比如小朱需要抓取类似
学号,当后面的checkbox被选中时候,就把那多少个学号,放在数组里

公海赌船备用网址,dataType:服务器重回的数据类型。必须是json,其他的都不行。因为webservice
是一json格式重返数据的,其款式为:{“d”:”…….”}。  success:请求成功后的回调函数。你可以在此间对回到的数目做任意处理。

 

大家要传五个参数,格式就按: 

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

[WebMethod(EnableSession = true)]//或[WebMethod(true)] 
public static string GetMissionInfoById(int id) 
{ 
CommonService commonService = new CommonService(); 
DataTable table = commonService.GetSysMissionById(id); 
    //..... 
return "false"; 
} 

从而,我们需要在本页后台,写一个WebMethod(我的这一个页面名字称为manage.aspx,请读者对象依据自己的页面记得相应变更)

后台的那么些WebMethod方法要求是共用的静态方法,方法方面注意要加上WeMethod属性;即便要在这些法子里面操作Session.就得在形式上加上属性

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

在既往我们在做ajax时,都要借助一般处理程序(.ashx)或web服务(.asmx),并且每一个伸手都要建一个这样的文件.这样建一大堆ashx文件,比较劳碌,多了看起来也不爽.

公海赌船备用网址 5

[WebMethod] 
public static string GetMissionInfoById(int Id,string name) 
{ 
   //.....  
return "false"; 
} 

率先,引入必须的JQuery文件

我们得以看到里面一部分参数值是一定的,所以从复用性的角度考虑,大家得以给jquery做一个扩展,对下边的函数做一下简约的卷入:大家建一个剧本文件叫jquery.extend.js。在其中写一个叫ajaxWeb瑟维斯的法子(因为webmethod其实就是WebService(Service)嘛,故此方法对请求*.asmx也是行之有效的),代码如下: