ajax測試Demo以及json簡單的轉化


Ajax是局部刷新,並不影響頁面其他的操作

實例1:本測試是演示利用Ajax在一個頁面播放視頻,點擊贊和踩按鈕,視頻不會受影響,

新建一個ajaxTest.html頁面

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script type="text/javascript" src="js/ajax.js"></script>
    <script type="text/javascript">
        function zan()
        {
            var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');//創建xmlhttp對象,考慮兼容性
            xmlhttp.open("POST", "AjaxTest.ashx?action=Zan", true);//准備向服務器發出post請求
            xmlhttp.onreadystatechange = function ()
            {
                if (xmlhttp.readyState == 4)    //readyState==4表示服務器返回數據了額,之前可能經歷  2(請求已發生,正在處理中)3表示(響應中有部分數據可以用,拂去其還沒有完成響應的生成)
                {
                    if (xmlhttp.status == 200)  //狀態碼200位成功
                    {
                        document.getElementById("ZanCount").innerHTML = xmlhttp.responseText;//responseText是服務器返回的報文正文
                    }
                    else {
                        alert("ajax服務器返回錯誤");
                    }
                }
            }
            xmlhttp.send();//這時才發送請求,發送完請求,並一定馬上服務器響應,然后看上面的onreadystatechange狀態,發送完繼續執行下面的操作,不等服務器
        }

        function cai()
        {
            ajax("AjaxTest.ashx?action=Cai", function (reText) {
                document.getElementById("CaiCount").innerHTML = reText;
            })
        }
        </script>
</head>
<body>
    <video src="video.mp4" controls="controls"></video>
        <p><input type="button" name="Zan" value="" onclick="zan()"/><label id="ZanCount"></label></p>
        <p><input type="button" name="Cai" value=""onclick="cai()"/><label id="CaiCount"></label></p>
</body>
</html>

 

然后新建一個后台處理程序AjaxTest.ashx

string action = context.Request["action"];
if (action == "Zan") //贊加1
{
SqlHelper.ExecuteNonQuery("Update T_ZanCai set ZanCount=ZanCount+1");
int zanCount = (int)SqlHelper.ExecuteScalar("select top 1 ZanCount from T_ZanCai");
context.Response.Write(zanCount);
}
else//踩加1
{
SqlHelper.ExecuteNonQuery("Update T_ZanCai set CaiCount=CaiCount+1");
int caiCount = (int)SqlHelper.ExecuteScalar("select top 1 CaiCount from T_ZanCai");
context.Response.Write(caiCount);
}

  數據庫test,新建表T_ZanCai

上面的ajax都有很多相似的部分,可以吧ajax封裝起來

新建js文件夾,下新建ajax.js

function ajax(url, onsuccess)
{
    var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');//創建xmlhttp對象,考慮兼容性

    xmlhttp.open("POST", url, true);//准備向服務器發出post請求
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4)    //readyState==4表示服務器返回數據了額,之前可能經歷  2(請求已發生,正在處理中)3表示(響應中有部分數據可以用,拂去其還沒有完成響應的生成)
        {
            if (xmlhttp.status == 200)  //狀態碼200位成功
            {
                //responseText是服務器返回的報文正文
                onsuccess(xmlhttp.responseText);
            }
            else {
                alert("ajax服務器返回錯誤");
            }
        }
    }
    xmlhttp.send();//這時才發送請求,發送完請求,並一定馬上服務器響應,然后看上面的onreadystatechange狀態,發送完繼續執行下面的操作,不等服務器
}

 

實例2:簡單的用戶注冊頁面,ajax檢測用戶名是否已被注冊,沒有注冊功能,只是檢測用戶名是否合法

注冊頁面Register.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>用戶注冊用戶名ajax檢測是否已用</title>
    <script type="text/javascript" src="js/ajax.js"></script>
    <script type="text/javascript">
        function checkUserName()
        {
            var userName = document.getElementById("UserName").value;
            ajax("checkuserName.ashx?UserName=" + userName, function (resText) {
                if (resText == "ok")
                {
                    document.getElementById("UserNameMsg").innerHTML="用戶名可用";
                }
                else if(resText == "error")
                {
                    document.getElementById("UserNameMsg").innerHTML = "用戶名不可用";
                }
                else if (resText == "forbidden")
                {
                    document.getElementById("UserNameMsg").innerHTML = "用戶名含有禁詞,請換用其他用戶名";
                }
            });
        }

    </script>
</head>
<body>
    <form action="Register.ashx">   
        用戶名:<input type="text" id="UserName" name="UserName" onblur="checkUserName()"/><span id="UserNameMsg" style="color:red"></span><br>
        密碼:<input type="password"/>
    </form>

</body>
</html>

ajax 后台處理checkUserName.ashx

 string userName=context.Request["UserName"];            
            if(userName.Contains("國家") || userName.Contains("管理員"))
            {
                context.Response.Write("forbidden");
            }
            int count = (int)SqlHelper.ExecuteScalar("select count(*) from tab_user where name=@UserName", new SqlParameter("@UserName", userName));
            if (count <= 0)
            {
                context.Response.Write("ok");
            }
            else
            {
                context.Response.Write("error");
            }

 

實例三:Json的使用:

C# 將.net對象轉為json字符串,然后在前台頁面js解析json為javascript對象使用

新建Person.cs類

 public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Email { get; set; }
    }

 

jsonTest.ashx代碼:

 List<Person> list =new List<Person>();
            list.Add(new Person { Name="hyb",Age=11,Email="111@q.com"});
            list.Add(new Person { Name = "aa", Age = 11, Email = "221@q.com" });
            list.Add(new Person { Name = "bb", Age = 11, Email = "23331@q.com" });
            //將對象序列號為json字符串的方法
            JavaScriptSerializer jss=new JavaScriptSerializer();
            string json=jss.Serialize(list);
            //string json = jss.Serialize(new Person { Name="哈哈",Age=23,Email="12345@qq.com"});

            context.Response.Write(json);

jsonTest.html前台代碼:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script type="text/javascript" src="js/ajax.js"></script>
    <script src="js/json2.js"></script>
    <script type="text/javascript" >
        function go()
        {
            ajax("jsonTest.ashx", function (resText) {
                //把json字符串轉為javascrip對象
                var person = JSON.parse(resText);
                for (var i = 0; i < person.length; i++)
                {
                    var p=person[i];
                    alert("姓名:"+p.Name+"年齡:"+p.Age+"郵箱:"+p.Email);
                }
            });
        }

    </script>
</head>
<body onload="go()">
</body>
</html>

 

注意:一般瀏覽器支持JSON.parse,不支持的引用json2,js就可以了

 


免責聲明!

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



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