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()部分執行完畢。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM