AJAX 提交到当前页面处理

之前我写了个ajax提交到ashx一般处理程序!那样就会又新建一个ashx页面!而也可以提交到当前页面,就不要创建一个新的ashx了!但是提交到本页面,相当于A标签提交,会做一些无用的操作!因为IsPostBack对ajax请求不起作用! 至于ajax提交到哪个页面好些!我也不是很清楚!敢兴趣的朋友可以去百度,google找下答案!

Default.aspx 页面

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Test._Default" %>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title></title>

    

</head>

<body>

    <form id="form1" runat="server">

    <asp:ScriptManager ID="ScriptManager1" runat="server">

    </asp:ScriptManager>

    <script type="text/javascript">

        function GetJson() {

            var xmlHttp;

            try {

                // Firefox, Opera 8.0+, Safari

                xmlHttp = new XMLHttpRequest();

            }

            catch (e) {



                // Internet Explorer

                try {

                    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

                }

                catch (e) {



                    try {

                        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

                    }

                    catch (e) {

                        alert("您的浏览器不支持AJAX!");

                        return false;

                    }

                }

            }



            xmlHttp.onreadystatechange = function() {

                if (xmlHttp.readyState == 4) {

                    //alert(xmlHttp.responseText);

                    var str = xmlHttp.responseText;

                    alert(str);

                    //$get("divShow").innerHTML = xmlHttp.responseText;

                    //eval('var s = {"id":1}');

                    //eval("var s = "+xmlHttp.responseText+")";

                    // s = { "id": 1 };

                    try{

                        eval("var s = " + (str));

                        alert(unescape(s.Name));

                    }catch(e){

                        alert(e.message)

                    }

                }

            }

            var data = "id=1";

            xmlHttp.open("POST", "default.aspx?ajax=true", true);

            xmlHttp.send(data);

        }

</script>



       

    <center>

    <div style="color:Red">

    Test

    <input type="button" value="GetJson" onclick="GetJson();" />

    <div id="divShow"></div>

    </div></center>

    </form>

</body>

</html>

Default.aspx后台
 
using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;



namespace Test

{

    public partial class _Default : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            if (IsPostBack) return;

            if (!string.IsNullOrEmpty(Request.QueryString["ajax"]))

            {

                string name = "hao'jiang\"fesd";

                string json = "{Id:1,Name:\"" + name.Replace("'", "%27").Replace("\"", "%22") + "\",Sex:\"male\"}";
                //嘿,上面的可以使用: string json = "{Id:1,Name:\"" + Server.UrlEncode(name) + "\",Sex:\"male\"}";

                Response.Write(json);    
/*

                 * 注意:如果你ajax提交的页面为 aspx,那么你在Response.Write("")之后还需要

                 * Response.End();不然你把你需要的字符打印出来了,接着还会把页面的HTML打印出

                 * 来,以前我不知道,没有执行Response.End(),xmlhttprequest.responseText取出来

                 * 还需要截取字符才对啊!

                 * 所以每次记得 调用Response.End();感兴趣的话,把Response.End();注释掉试一试!

                 * */

                Response.End();
                //Response.End();

            }   

        }        

    }

}
 
 
  

Technorati 标签:

你可能感兴趣的:(Ajax)