zoukankan      html  css  js  c++  java
  • 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()部分执行完毕。 

  • 相关阅读:
    【连载】【FPGA黑金开发板】NIOSII那些事儿USB设备模式(十九)
    【连载】【FPGA黑金开发板】NIOSII那些事儿LCD中英文字符显示(二十三)
    Asp.Net缓存
    Repeater实现颜色交替
    C#迭代器简单应用
    C#泛型编程初级入门
    利用vs.net快速开发windows服务(c#) (转)
    简单的c#验证类(转)
    编写适合于自己的代码生成器 (zhuan)
    HashTable的使用(转)
  • 原文地址:https://www.cnblogs.com/Wbely/p/3844460.html
Copyright © 2011-2022 走看看