zoukankan      html  css  js  c++  java
  • Jquery Ajax实例(一)

    先直接上一个简单的实例:

    aspx页面:

    View Code
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Ajax简单实例</title>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <script type="text/javascript">
            $(function () {
                $("#btnAjax").click(function () {
                    $.post("Ajax.ashx?action=Show", {
                        ID: "2012"
                    }, function (data) {
                        var json = eval("(" + data + ")"); //对返回的json数组进行解析
                        alert(json.ID);
                    });
                });
            });
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <input type="button" value="Ajax" id="btnAjax" />
        </div>
        </form>
    </body>
    </html>

    ajax.ashx:

    View Code
    public class ajax : IHttpHandler
    {
    
        public void ProcessRequest(HttpContext context)
        {
            string action = context.Request.QueryString["action"];
            switch (action)
            {
                case "Show":
                    Show(); break;
            }
        }
       
        protected static void Show()
        {
            System.Threading.Thread.Sleep(3000);
            string ID = HttpContext.Current.Request["ID"];
            WriteJson("ID", ID);
        }
        /// <summary>
        /// 输出Json
        /// </summary>
        /// <param name="key"></param>
        /// <param name="val"></param>
        private static void WriteJson(string key, string val)
        {
            HttpContext.Current.Response.Write(GetJSON(key, val));
            HttpContext.Current.Response.ContentType = "text/plain"; //设置MIME格式
            HttpContext.Current.Response.End();
        }
        /// <summary>
        /// 获取JSON字符串
        /// </summary>
        /// <param name="dic"></param>
        /// <returns></returns>
        private static string GetJSON(string key, string val)
        {
            return string.Format("{{\"{0}\":\"{1}\"}}", key, val);
        }
    
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

    有几点要说明

    1 根据获取action的值来确定调用使用哪个方法

    2.将方法返回的值格式化为json格式

    3 当$.post的回调函数接受返回的json字符串必须先使用eval解析,在对字符串进行操作

    下面上一个简单登陆的Ajax实,大体的代码和上面的实例一样

    aspx

    View Code
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Ajax简单实例-登陆</title>
        <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(function () {
                $("#btnLogin").click(function () {
                    var name = $("#txtUserName").val();
                    var pwd = $("#txtPwd").val();
                    $.post("ajax.ashx?action=Login",{
                        username:name,password:pwd
                    }, function (data) {
                        var json = eval("(" + data + ")");
                        if (json.status == "1") {
                            alert("登陆成功,正在跳转...");
                            //location.href = "";跳转
                        } else {
                            alert("用户名或密码错误");
                        }
                    });
    
                });
    
            });
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <p><span>UserName:</span><input type="text" id="txtUserName" /></p>
        <p><span>PassWord:</span><input type="password" id="txtPwd" /></p>
        <p><input type="button" id="btnLogin" value="Ajax登陆" /></p>
        </div>
        </form>
    </body>
    </html>

    ajax.ashx:

    View Code
    public class ajax : IHttpHandler
    {
    
        public void ProcessRequest(HttpContext context)
        {
            string action = context.Request.QueryString["action"];
            switch (action)
            {
                case "Show":
                    Show(); break;
                case "Login":
                    Login();break;
            }
        }
        protected static void Login()
        {
            string strUserName = HttpContext.Current.Request["username"];
            string strPwd = HttpContext.Current.Request["password"];
    
            string status = string.Empty;//标识
            if (strUserName == "admin" && strPwd == "123")
            {
                status = "1";
            }
            else
            {
                status = "2";
            }
            WriteJson("status", status);
        }
        protected static void Show()
        {
            string ID = HttpContext.Current.Request["ID"];
            WriteJson("ID", ID);
        }
        /// <summary>
        /// 输出Json
        /// </summary>
        /// <param name="key"></param>
        /// <param name="val"></param>
        private static void WriteJson(string key, string val)
        {
            HttpContext.Current.Response.Write(GetJSON(key, val));
            HttpContext.Current.Response.ContentType = "text/plain"; //设置MIME格式
            HttpContext.Current.Response.End();
        }
        /// <summary>
        /// 获取JSON字符串
        /// </summary>
        /// <param name="dic"></param>
        /// <returns></returns>
        private static string GetJSON(string key, string val)
        {
            return string.Format("{{\"{0}\":\"{1}\"}}", key, val);
        }
    
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

    当我们经常使用ajax的时候,可以对上面的代码进行封装

    我简单的单独的写了一个ajax.js文件

    View Code
    /******************************************************************************
    * filename: ajax.js
    *******************************************************************************/
    
    var imgPath = "loading.gif"; //加载图片路径
    
    var ajax = {};
    //获取服务器路径
    ajax.getPath = function (param) {
        return "ajax.ashx?action=" + param;
    };
    
    //显示正在加载的图标
    ajax.loading = function (src, show) {
        show = show || false;
        //显示
        if (show) {
            $(src).after("<img id=\"loading\" src='" + imgPath + "' title='加载中...' alt='加载中...' />");
            //$(src).hide();
        } else {
            //隐藏
            // $(src).show();
            $("#loading").hide();
            $(src).next().hide();
        }
    };
    
    
    var Tool = {};
    //获取JSON数据
    Tool.getJSON = function (str) {
        if (str == null || str == "") {
            return [];
        }
        return eval("(" + str + ")");
    };

    aspx页面:

    View Code
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>封装方法</title>
        <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
        <script type="text/javascript" src="ajax.js"></script>
        <script type="text/javascript">
            $(function () {
                $("#AjaxTest").click(function () {
                    ajax.loading(this, true);
                    $.post(ajax.getPath("Show"), {
                        ID: "2"
                    }, function (data) {
                        ajax.loading(this, false);
                        var json = Tool.getJSON(data);
                        alert(json.ID);
                        
                    });
                });
            });
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <input type="button" value="AjaxTest" id="AjaxTest" /><!--<img id="loading" src=loading.gif title='加载中...' alt='加载中...' />-->
        </div>
        </form>
    </body>
    </html>

    还包括ajax.ashx文件

    简单登陆的例子,也可以通过它来修改

  • 相关阅读:
    redis删除指定前缀的缓存
    php生成N个不重复的随机数实例
    Redis数据持久化,安全
    MySQL LOAD DATA
    utf 8无bom和utf 8什么区别
    MySQL直接导出CSV文件,并解决中文乱码的问题
    php 中将完整的年月日时分秒的时间转换成 年月日的形式
    PHP如何根据数组中的键值进行排序
    PHP array_multisort—对多个数组或多维数组进行排序
    sql case 函数与详细说明
  • 原文地址:https://www.cnblogs.com/youmeng/p/2825622.html
Copyright © 2011-2022 走看看