Ajax post 提交数据

实现功能:前端html页面,填入相应的预约信息提交到后台返回并返回信息

1.前端ajax代码

<script type="text/javascript">

    $(function () {

        //表单提交

        $("#btnSubmit").click(function () {

            var txtname = $("#txtname").val();

            var txttel = $("#txttel").val();

            var txtOrderDepartment = $("#txtOrderDepartment").val();

            var txtOrderTime = $("#txtOrderTime").val();

            var txtOrderDescription = $("#txtOrderDescription").val();

            if (txtname == null || txtname == "") {

                alert("用户名不能为空!");

            }

            else

            {

                $.ajax({

                    type: "POST",

                    url: "../../tools/submit_ajax.ashx?action=order_add",

                    dataType: "json",

                    data: { txtname: txtname, txttel: txttel, txtOrderDepartment: txtOrderDepartment, txtOrderTime: txtOrderTime, txtOrderDescription: txtOrderDescription },

                    success: function (data, msg) {

                        if (data.status == 1) {

                            alert(data.msg);

                        }

                        else {

                            alert(data.msg);

                        }

                    }

                });

            }

        

        });

    });

</script>

2.Ashx文件中相应代码

public void ProcessRequest(HttpContext context)

        {

            //取得处事类型

            string action = DTRequest.GetQueryString("action");

            switch (action)

            {

                case "comment_add": //提交评论

                    comment_add(context);

                    break;

                case "comment_list": //评论列表

                    comment_list(context);

                    break;

}

}

#region 用户预约=====================================

        private void order_add(HttpContext context)

        {

            DTcms.Model.article_comment model = new Model.article_comment();

            model.user_name = DTRequest.GetFormString("txtname").Trim();//姓名

            model.reply_content = DTRequest.GetFormString("txttel").Trim();

            model.add_time = DateTime.Now;//添加预约的时间

            model.reply_time = Convert.ToDateTime(DTRequest.GetFormString("txtOrderTime").Trim());

            model.content = DTRequest.GetFormString("txtOrderDepartment").Trim()+" | "+DTRequest.GetFormString("txtOrderDescription").Trim();//预约描述

            //DTRequest.GetFormString("txtOrderDepartment").Trim()+预约科室

            model.channel_id = 27;

            string userip = DTRequest.GetIP();

            DTcms.BLL.article_comment bll = new BLL.article_comment();

         

            //保存注册信息

            if (siteConfig.commentstatus == 0)

            {

                context.Response.Write("{"status":0, "msg":"系统故障,暂停预约!"}");

                return;

            }

           

            //设置对应的状态

            int newId = bll.Add(model);

            if (newId < 1)

            {

                context.Response.Write("{"status":0, "msg":"系统故障,请联系网站管理员!"}");

                return;

            }

            else

            {

                context.Response.Write("{"status":1, "url":"" + new Web.UI.BasePage().linkurl("index") + "", "msg":"预约成功!"}");

            }

            return;

        }

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------后续更新----------------------------------------------------------------------------------------------------

距离上段博客已有两年未更新了,今日遇到了ajax中的一个问题,解决后省了好大的麻烦,于是乎贴出来供大家参考~!

前端ajax代码如下:

<script type="text/javascript">
        //根据父级ID显示二级分类
        function GetLevelTwo(parentCode) {
            var strTwoLevel="";
            $.ajax({
                type: "POST",
                url: "ashx/confirmLuckDraw.ashx?action=GetCodes",
                dataType: "text",
                data: { ParentCode: parentCode },
                success: function (data) {
                    var myObject = eval('(' + data + ')');
                    myObject = eval(myObject.Table);
                    for (var i = 0; i < myObject.length; i++) {
                        strTwoLevel += "<div class="list_box"><a href="List.aspx?Code="+myObject[i].Code+"" class="title" title="" + myObject[i].Name + ""><h3>" + myObject[i].Name + "</h3></a><div class="box">" + GetLevelThree(myObject[i].Code) + "</div></div>";
                    }
                    $("#firstlevel").html(strTwoLevel);
                }
            });
        }

        //根据父级ID显示三级分类
        function GetLevelThree(parentCode) {
            var strThree = "";
            $.ajax({
                async: false,
                type: "POST",
                url: "ashx/confirmLuckDraw.ashx?action=GetThreeCodes",
                dataType: "text",
                data: { ParentCode: parentCode },
                success: function (data) {
                    strThree = data;
                }
            });
            return strThree;
        }

上述代码中,在一个ajax中将一个div标签的内容填充,其中填充的内容又调用另外一个ajax方法获取可得。之前没有写属性:async:false;即默认async属性默认为true.

也就是说在执行这个ajax的时候不管服务器端有没有返回到前端值都将往下执行,故在ajax执行完毕后不管有没有值,在ajax括号外,这个变量一直为空。

加过这个async为false之后,问题得到解决。

官方解释如下:

async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程和ajax块后面的脚本(另一个线程)

 当把asyn设为false时,这时ajax的请求时同步的,也就是说,这个时候ajax块发出请求后,他会等待在function1()这个地方,不会去执行function2(),知道function1()部分执行完毕。 

原文地址:https://www.cnblogs.com/Wbely/p/3844460.html