Ajax传值问题

这条博客是我自己写AJAX是遇到的问题

首先是贴出全部的代码:

  <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebandAJAX.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>登陆</title>
    <style type="text/css">
        *{
            margin:0px;
            padding:0px;
            font-size:16px;
        }
        #main{
            width:500px;
            height:500px;
            margin:100px auto;
            border:1px solid black;
            text-align:center;
            padding-top:50px;
        }
        #main>button{
            margin:20px auto;
            margin-left:20px;
        }
    </style>
    <script type="text/javascript">
        function Login() {

        //创建HTTP请求对象
        //
        var req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
      // alert(document.getElementById('userName').value);
        //如果是GET请求
        //第一个参数:GET/POST  第二个参数:url    第三个参数:true-异步  false-同步     
        //
        req.open('GET', '../Handler/Handler1.ashx?userName=' + document.getElementById('userName').value + '&userPwd=' + document.getElementById('userPwd').value, true);
       // req.open('GET', '../Handler/Handler1.ashx?userName=123&userPwd=123', true);
        req.send(null);

        //如果是POST请求
        //req.open('POST', '../Handler/Handler1.ashx', true);
        //req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        //req.send('userName=' + document.getElementById('userName').value + '&userPwd=' + document.getElementById('userPwd').value);

        //接受AJAX响应:发送AJAX请求后,我们要能接收HTTP响应,这是通过XMLHttpRequest的实例
        //注册回调函数完成的。并通过XMLHttpRequest对象的responseText属性或responseXML属性
        //来获取响应消息的内容。代码如下:

        //HTTP响应的处理
        //
        req.onreadystatechange = function () {
            if (req.readyState == 4 && req.status == 200) {
                alert("结果是:" + req.responseText);

            }

        };


        }

        function GetInfo() {
            alert("fljsafk");
            setInterval(function () {

             var req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
               req.open('POST', '../Handler/Handler2.ashx?', true);
               req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
               req.send('testh=haha');//这里面不可以有空格


               req.onreadystatechange = function () {
                   if (req.status == 200 && req.readyState == 4) {
                       alert("响应的结果是:" + req.responseText);
                   }
               };
            }, 2000);
            alert("结束");
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div id="main">
         用户名:<input type="text" name =" userName" id="userName" placeholder ="请输入用户名 " /><br /><br />
         密   码:<input type ="password"name ="userPwd" id="userPwd" placeholder =" 请输入密码" /><br />
         //至于这个为什么加false,我也不明白
        <button onclick="Login();return false;">登陆</button><button onclick="GetInfo();return false;">POST方法按钮</button>
        <input type="text" id="showInfo"/>
         <asp:Button ID="Button1" runat="server" Height="30px" OnClick="Button1_Click" Text="Button" />
    </div>
    </form>
</body>
</html>


拆分出其中的POST方法:

function GetInfo() {
            alert("fljsafk");
            setInterval(function () {

             var req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
               req.open('POST', '../Handler/Handler2.ashx?', true);
               //这个地方和GET方法不一样
               req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

                //这个地方一定要注意,因为你传过去,编译器会把空格也带上,所以你的接受方参数一旦忘记写上空格,那么就会报异常了
                //这个地方也不一样
               req.send('testh=haha');//这里面不可以有空格

               req.onreadystatechange = function () {
                   if (req.status == 200 && req.readyState == 4) {
                       alert("响应的结果是:" + req.responseText);
                   }
               };
            }, 2000);
            alert("结束");
        }

拆分出其中的GET方法:

   function Login() {

        //创建HTTP请求对象
        //
        var req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
      // alert(document.getElementById('userName').value);
        //如果是GET请求
        //第一个参数:GET/POST  第二个参数:url    第三个参数:true-异步  false-同步     
        //
        req.open('GET', '../Handler/Handler1.ashx?userName=' + document.getElementById('userName').value + '&userPwd=' + document.getElementById('userPwd').value, true);
       // req.open('GET', '../Handler/Handler1.ashx?userName=123&userPwd=123', true);
        req.send(null);

        //如果是POST请求
        //req.open('POST', '../Handler/Handler1.ashx', true);
        //req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        //req.send('userName=' + document.getElementById('userName').value + '&userPwd=' + document.getElementById('userPwd').value);

        //接受AJAX响应:发送AJAX请求后,我们要能接收HTTP响应,这是通过XMLHttpRequest的实例
        //注册回调函数完成的。并通过XMLHttpRequest对象的responseText属性或responseXML属性
        //来获取响应消息的内容。代码如下:

        //HTTP响应的处理
        //
        req.onreadystatechange = function () {
            if (req.readyState == 4 && req.status == 200) {
                alert("结果是:" + req.responseText);

            }

        };

        //Session["jfdsja"] = "我是session";
        }

GET方法的接收代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebandAJAX
{
    /// <summary>
    /// Handler1 的摘要说明
    /// </summary>
    public class Handler1 : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            string userName = context.Request.QueryString["userName"].ToString();
            string userPwd = context.Request.QueryString["userPwd"].ToString();

            string result = string.Empty;

            if (userName=="admin"&&userPwd=="123")
            {
                result = "登陆成功";
                context.Response.ContentType = "text/plain";
                context.Response.Write(result);
                return;
            }
            context.Response.ContentType = "text/plain";
            context.Response.Write("登陆失败");//write的参数就是你要传给请求方的数据


        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

POST的接收代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebandAJAX.Handler
{
    /// <summary>
    /// Handler2 的摘要说明
    /// </summary>
    public class Handler2 : IHttpHandler
    {       
        public void ProcessRequest(HttpContext context)
        {         
            string test = context.Request["testh"].ToString();    
            string result = string.Empty;
            if (!string.IsNullOrEmpty(test))
            {
                result = "success";
            }
            context.Response.ContentType = "text/plain";
            context.Response.Write(result);
       }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

以上就是全部代码,刚学写的比较乱啊,好多代码该怎么写,写在哪个文件里面,还不是理解,敬请见谅啊,后期会持续更改,如有不足请指正!谢谢大家!

我最想讲的就是:POST方法send传值得时候,里面的参数(空格是算的),比如:
req.sed(“name = haizi”);
平常我们都喜欢在里面加上空格,看起来好看,但是了当你在服务端接收的时候就要注意了:
req.context.Request.Form[“name”];这样是会出现异常的,因为你么有加上那个空格
req.context.Request.Form[“name “];这样才正确

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值