+ -
当前位置:首页 → 问答吧 → (.NET)求教POST问题,自己写的POST 处理页面报错:“未实例化"

(.NET)求教POST问题,自己写的POST 处理页面报错:“未实例化"

时间:2011-06-08

来源:互联网


JScript code

//创建AJAX连接
var XmlHttp=false;
function Create() {
    try {
        XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try { XmlHttp = new ActiveXObject("Microsoft.XMLHTTP") }
        catch (e2) {
            return false;
        }
    }
}
//这个是点击一个按钮后触发的事件
 $("#btn_login").click(function() {
        Create();
        var url = "IndexLoginDemo.aspx";
        var content = "U_Name=" + $("#tb_UserName").val() + "&Pwd=" + $("#tb_UserPwd").val();
        XmlHttp.open("POST", url, true);
        XmlHttp.setRequestHeader("Content-Tyle", "application/x-www-form-urlencoded");
        XmlHttp.onreadystatechange = CallBack_IndexLogin;
        alert(content);
        alert(url);
        XmlHttp.send(content);

    });
//回调函数
function CallBack_IndexLogin() {
    if (XmlHttp.readyState==4) {
        if (XmlHttp.status == 200) {
            var Message = XmlHttp.responseText;
            alert(Message);
        }
    }
}

//



下面是处理页面的代码
C# code

<%@ Page Language="C#" %>

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

<script runat="server" type="text/C#">
    protected void Page_Load(object sender, EventArgs e)
    {
        string UserName = Request.Form.Get("U_Name").ToString();//这个地方提示未实例化
        string UserPwd = Request.Form.Get("Pwd").ToString();
        WriteMessage(UserName+UserPwd); //
     }
    protected void WriteMessage(string isMessage)
    {
        Response.Clear();
        Response.Write(isMessage);
        Response.Flush();
        var a = Request.InputStream;
    }
</script>






求解答,介到底是肿么了。感激不尽
 

作者: xym201105   发布时间: 2011-06-08

C# code

Request.Form["U_name"].ToString();

作者: inetfuture   发布时间: 2011-06-08

我试过 不好用的 Request.Form[];Request[];我都试过,全部都不好用 悲剧啊

作者: xym201105   发布时间: 2011-06-08

引用 2 楼 xym201105 的回复:
我试过 不好用的 Request.Form[];Request[];我都试过,全部都不好用 悲剧啊

那就是数据没有post过来

作者: inetfuture   发布时间: 2011-06-08

先谢谢你了,我是JS出错了还是C#出错了呢。错在哪里啊。

作者: xym201105   发布时间: 2011-06-08

是用的jquery吧? 为什么不直接用jquery中ajax方法呢?

作者: inetfuture   发布时间: 2011-06-08

还没学到呢 嘿嘿 我现在没工作 报的培训班 现在马上结束了 得做毕业设计。 JS就没怎么讲 JQUERY没讲过 是我自学的 所以还没学到。 想问一下,JQUERY肯定得有JS做基础吧?

作者: xym201105   发布时间: 2011-06-08

刚刚看了status的值是500 貌似无法解析ASP代码?

作者: xym201105   发布时间: 2011-06-08

不用 只是习惯jquery之后就离不了它了 js的原始写法都忘了……

作者: inetfuture   发布时间: 2011-06-08

哦 你现在工作了吗 我学的是.NET 未来的路基本是B/S吗? 我总是觉得B/S就是做网页,实际上的开发模式是什么样子的。能透露一点机密给我吗 ^_^

作者: xym201105   发布时间: 2011-06-08

JScript code

//我给你稍改了下
 var XmlHttp = null;
    function Create() {
        if (window.XMLHttpRequest) {
            XmlHttp = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) {
            XmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
        }
    }
    //这个是点击一个按钮后触发的事件
    $(document).ready(function() {
        $("#btn_login").click(function() {
            Create();
            var url = "Handler.ashx";
            var content = "U_Name=" + $("#tb_UserName").val() + "&Pwd=" + $("#tb_UserPwd").val();
            XmlHttp.open("POST", url, true);
            XmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            //Content-Type而不是Content-Tyle
            XmlHttp.onreadystatechange = CallBack_IndexLogin;
            XmlHttp.send(content);

        });
    });



另外你post的页面不该是一个aspx页面,建议你用ashx页面处理,我写一个,如下:

C# code

<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;

public class Handler : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
       
        string UserName = context.Request["U_Name"].ToString();
        string UserPwd = context.Request["Pwd"].ToString();
        WriteMessage(context,UserName + UserPwd); //

    }
    protected void WriteMessage(HttpContext context, string isMessage)
    {
        context.Response.Clear();
        context.Response.Write(isMessage);
        context.Response.Flush();       
        var a = context.Request.InputStream;
    }
    public bool IsReusable {
        get {
            return false;
        }
    }

}



你的报错原因是首次加载并不会有post的数据过来,所以会出错,

作者: NianHui   发布时间: 2011-06-08

直接Request["U_Name"],
如果出错调试下,看你 var content = "U_Name=" + $("#tb_UserName").val() + "&Pwd=" + $("#tb_UserPwd").val();这个content到底是正确没
alert(content);

作者: zhouyuqwert   发布时间: 2011-06-08

引用 10 楼 nianhui 的回复:

JScript code

//我给你稍改了下
var XmlHttp = null;
function Create() {
if (window.XMLHttpRequest) {
XmlHttp = new XMLHttpRequest();
}
else if (window.ActiveXObject)……

asp页面或者ashx处理程序都是可以接收的。。。ashx是一般处理程序,不是页面

作者: zhouyuqwert   发布时间: 2011-06-08

或者:
C# code

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Form["U_Name"] != null && Request.Form["Pwd"] != null)
        {
            string UserName = Request.Form["U_Name"].ToString();//这个地方提示未实例化
            string UserPwd = Request.Form["Pwd"].ToString();
            WriteMessage(UserName + UserPwd); //
        }
     }

作者: NianHui   发布时间: 2011-06-08

引用 10 楼 nianhui 的回复:
JScript code

//我给你稍改了下
var XmlHttp = null;
function Create() {
if (window.XMLHttpRequest) {
XmlHttp = new XMLHttpRequest();
}
else if (window.ActiveXO……


非常感谢!!!! 解决问题了 ,想问你一个问题。  
就是ashx主要是什么用途和概念。 还有那个context主要是管什么的啊? 麻烦你再帮我解答解答。谢谢了

作者: xym201105   发布时间: 2011-06-08

引用 12 楼 zhouyuqwert 的回复:

引用 10 楼 nianhui 的回复:
asp页面或者ashx处理程序都是可以接收的。。。ashx是一般处理程序,不是页面

呵呵,我说错了,不是ashx页面,是一般处理程序。
我是没见过用aspx页面接受的,太浪费了

作者: NianHui   发布时间: 2011-06-08