JOJ
踏踏实实做人,认认真真做事!放纵自己就是毁灭自己!

之前我写了个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提交
posted on 2010-04-15 13:37  JoinJ  阅读(4496)  评论(2编辑  收藏  举报