JQuery中ajax,get方法在asmx中的使用

喜大普奔,今天终于完成了一个月前就想完成的一个代码实现。就是在点击一个按钮后禁用按钮,弹出正在操作的提示框,执行完事件后再启用按钮。

以前的想法是Ajax和aspx联用,这样,省页面,也不用对后台代码进行修改,后来发现,有一些类在这个联用中不能使用,在这个过程里,方法是static类型的,我这里有一个发送邮件的操作,使用了Server.MapPath方法和file类的一些方法,就不能使用了。在请教了一个老同事后,决定采用Ajax和asmx的联用。

基本思路是,先点击一个按钮,弹出一个弹窗提示,按钮disable,Ajax传输数据到asmx处理,asmx处理成功后返回0、1的标识,Ajax再接受标识后显示按钮和关掉弹窗。

弹窗是使用了公司的一个弹窗,不是自己写的。

HTML页面

<input type="button" id="btsave" οnclick="Submitcheck()" value="提交/Save" class="btn-primary" style="text-decoration: none; height: 25px;" />

js

function Submitcheck() {
            
            if (document.getElementById("txquantity").value == "") {
                alert("Please fill in the Quantity(请填写购买数量)");
                return false;
            }            
            
            $("#btsave").hide();
            
            $.Dialog('Searchff', null, null, 520, 80);
            var userid = document.getElementById("iuserid").value;
            var username = document.getElementById("iusername").value;
            
            $.ajax({
                type: "POST",
                url: "WebService1.asmx/Submit",
                //contentType: "application/json; charset=utf-8",
                //dataType: "json",
                dataType: "xml",
                data: {
                    iuserid: userid,
                    iusername: username//只传递了部分字段
                    
                },
                //async: false,
                success: function (result) {
                    var my = $(result).find("string").text();//很重要的解析
                    if (my == "1") {
                        $.DialogClose('Searchff', null, null, 520, 80);
                        alert("下单成功,我们会尽快帮您处理/Order Success");
                        $("#btsave").show();
                    } else {
                        $.DialogClose('Searchff', null, null, 520, 80);
                        alert("下单失败,请联系客服/Order failure,Contact customer service");
                        $("#btsave").show();
                    }
                },
                error: function () {
                    alert("Exception(系统异常)");
                }
            });
        }

contentType: "application/json;charset=utf-8",//有这条报“请求格式无效

这个可能后asmx返回的是xml格式相冲突吧。

//async: false,是否异步,有这句话会不能success结果处理的。

asmx页面

 [WebMethod]
        public string Submit(string iuserid, string iusername)
        {
            string userid = iuserid;
            string returnstring = "1";
            try
            {
                #region 获取orders信息
                Orders orders = new Orders();
                orders.orderid = userid + DateTime.Now.ToString("yyyyMMddHHmmss");
                orders.userid = Convert.ToInt32(userid);
                orders.username = iusername; 
                #endregion                
                #region 插入数据库
                bool adflag = new OrdersBLL().Add(orders);               
                if (adflag)
                {
                    //购买成功后清除部分填写信息
                    //txquantity.Value = "";
                    //tbremark.Text = "";
                    // return;
                }
                else
                {
                    returnstring = "0";
                    return returnstring;
                }
                #endregion
                #region 组装邮件
                var strFileCn = File.ReadFile(Server.MapPath("order_model.html"), "utf-8");
                strFileCn = strFileCn.Replace("#orderid#", orders.orderid);
                strFileCn = strFileCn.Replace("#username#", orders.username);
                var att = new string[1];
                att[0] = "";
                var strRocFileName = "Adjunct/ROC/" + orders.orderid + ".htm";
                strRocFileName = Server.MapPath(strRocFileName);
                try
                {
                    File.WriteFile(strRocFileName, strFileCn, "utf-8");
                }
                catch (Exception)
                {                   
                    return "0";
                }
                string strsendto = iemail; //应该是发送给固定的邮箱,需要提供
                if (File.Net_Email(strsendto, "", "", strFileCn, "iTourbagSoftCard Commodity order sheet.", att, "", "") == "1")
                {                    
                    File.SysLogAdd(1, iusername, 1, "订单提交成功,系统自动发送邮件,我们会尽快帮您处理" + strsendto, ip);
                }
                #endregion
            }
            catch (Exception ex)
            {                
                returnstring = "0";
                return returnstring;
            }
           
            return returnstring;
        }
代码不全,只是提示怎么使用。

一番辛苦,忙这个差不多忙了半天,好多东西都要百度,也差点想半途放弃,冒出了两个想法,一个是asmx传值和获取值的时候那么写,是因为不会写JSON,二是注释async: false这句话,刚开始发现它在的时候,处理显示的效果好像是点击按钮,等按钮事件处理完在弹出提示的,突然想起这句话好像和异步有关,就注释点试试看的,没想到还真成了。还是学的不好啊。还有将解析result的时候,试了好多方法,发现都没有结果,现在回想应该是方法错了,当时使用的方法基本上是解析JSON的,这里asmx返回的是xml,然后百度js使用Ajax和asmx,看到JQuery中ajax,get方法在ashx,aspx,asmx中的使用一文,发现了自己的问题(我转载了这篇文章),及时改了过来。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值