利用 Microsoft.XMLHTTP/XMLHttpRequest 对象 实现Ajax技术 的总结

一、实现Ajax的方法

Ajax可以通过 Microsoft.XMLHTTP/XMLHttpRequest 对象、jQuery、Msxml2.XMLHTTP对象来实现,asp.net自身也提供了对Ajax的支持(见:工具栏-Ajax扩展),本文仅讨论第一种,并且使用asp.net编写。

二、实现Ajax的总结

1.JavaScript对大小写敏感,当你遇到问题时请检查代码,尤其是Microsoft.XMLHTTP/XMLHttpRequest对象的属性和方法,该大写就大写,该小写就小写,参见百度百科等。

2.不管你使用POST还是GET方法调用open()函数,服务端代码只能用 Request[“key”].ToString()、或者Request.QueryString[“index/name”].ToString()接收,接收前可先判断是否为空:if(Request["name"] != null)或if(Request.QueryString["name"] != null)

3.如果你想使用IsPostBack来确定是不是第一次加载网页恐怕不行了,IsPostBack始终为false,也就是始终都是第一次加载页面(怎么可能呢)。至于为什么?三言两语是说不清,道不明的。(当然,想要改变IsPostBack的值也不是不可能,使用asp.ne中的UpdatePanel可解决此问题)

4.服务端的Respose.Flush();函数可能会不好使,自己想办法吧...(使用asp.net自带的Ajax扩展吧)


aspx代码:Home.aspx


JavaScript代码:客户端

function Onclick()
{
    var acc = document.getElementById("TextBox_Username").value;
    var pas = document.getElementById("TextBox_Password").value;

    var xmlhttp;

    try
    {
        if (window.ActiveXObject)
        {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if (window.XMLHttpRequest)
        {
            xmlhttp = new XMLHttpRequest();
        }
        else
        {
            alert("对象初始化错误,请尝试使用其他浏览器!");
        }
    }
    catch (err)
    {
        alert("对象初始化错误,请尝试使用其他浏览器!\r\n错误:" + err);
    }

    try
    {
        xmlhttp.open("POST", "Home.aspx?TextBox_Username=" + acc + "&TextBox_Password=" + pas, true);

        xmlhttp.onreadystatechange = function ()
        {
            if (xmlhttp.readyState == 4)
            {
                alert(xmlhttp.responseText);
            }
        }
        xmlhttp.send(null);
    }
    catch (err)
    {
        alert(err);
    }

    return false;      //阻止提交表单
}


C#代码:服务端

protected void Page_Load(object sender, EventArgs e)
    {
        if (Request["TextBox_Username"] != null && Request["TextBox_Password"] != null)//判空
        {
            string account = Request["TextBox_Username"].ToString();//取值
            string password = Request["TextBox_Password"].ToString();
            Response.Clear();
            Response.Write("你好!");
            Response.Flush();
            //Response.End();
            //其他操作
        }
        else
        {
            //其他操作
        }

    }

/ /  本人在vs2012 + Firefox 中测试的,其他环境下结果可能不同,如有错误请指出,谢谢!

你可能感兴趣的:(Web开发,xmlhttprequest,ajax,asp.net,javascript)