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

来源:互联网 发布:淘宝旧版本下载 编辑:程序博客网 时间:2024/06/05 15:44

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

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

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

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

HTML页面

<input type="button" id="btsave" onclick="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中的使用一文,发现了自己的问题(我转载了这篇文章),及时改了过来。


原创粉丝点击