各位大侠,小弟最近研究jquery与asp.net遇到一个问题,具体前后台代码如下:
客户端:
<script type="text/javascript">
        function send() {
            $.ajax(
            {
                type: "post",
                url: "Testpage.aspx",
                data: { a: 1 },
                success: function(result) { alert("successful!"); alert(result); }
            }
            );
        }
    </script>
服务器端:
protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Form["a"] == null) Response.Write("failed"); Response.End();
        if (Request.Form["a"].ToString() == "1")
        {
            Response.Write("aaaaaaa");
            Response.End();
        }
    }
为什么Request.Form["a"]为null 一直取不到a的值?

解决方案 »

  1.   

    正好小弟也在研究jquery 你试试 if (!Page.IsPostBack)
    {
    if (Request["a"] == null) Response.Write("failed"); Response.End(); 
            if (Request["a"].ToString() == "1") 
            { 
                Response.Write("aaaaaaa"); 
                Response.End(); 
            } 
    }获取值是用Request[""]
      

  2.   


            function send() {
                $.ajax(
                {
                    type: "post",
                    url: "Testpage.aspx",
                    dataType: "json",
                    data: { a: 1 },
                    success: function(result) { alert(result.toString()); },
                    error: function(ex) { alert(ex.responseText); }
                }
                );
            }         protected void Page_Load(object sender, EventArgs e)
            {
                if (Request["a"] == null)
                {
                    Response.Write("failed");
                    Response.End();
                }
                if (Request["a"].ToString() == "1")
                {
                    Response.Write("aaaaaaa");
                    Response.End();
                } 
        }
      

  3.   

    你的jquery代码和Testpage.aspx不在一个url地址内吧,服务器端可以这么调用System.Web.HttpContext.Request.Params["a"]
      

  4.   

    检查js文件的编码和Testpage.aspx页面的编码是否一致?
      

  5.   

    $.post("ajaxprovider.aspx",
        { t: 'search'},
        function(data, textStatus)
        {
          //处理回调数据
        },
        "json");主要看前端,服务器端只要Request.Forms中是可以去到数据的,注意保持编码格式一致
      

  6.   

    var params=$('input').serialize(); 
    data:params, 

    data: "a=1",试试
      

  7.   

    你调试一下子看request有什么值传递过来
      

  8.   

    貌似都不行 为什么Request里面没什么东西 很奇怪
      

  9.   

    不知道你有没有好好看我4楼的代码,你在PageLoad里第一个if后面没有加花括弧
    所以Response.End();无论Request["a"]是否为null都会执行的
    第二个if是无论如何都不会被执行到
      

  10.   

    我就是复制4楼的代码 还是老样子 调试了下 Request.Form allkeys数量为0 即里面没有东西传过来!不知道为什么
      

  11.   

    这是我的完整测试代码,已通过,你参考下吧:a.aspx:<!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>    <script type="text/javascript" src="/js/jquery.js"></script>    <script type="text/javascript">
            function send() {
                $.ajax(
                {
                    type: "post",
                    url: "b.aspx",
                    dataType: "json",
                    data: { a: 1 },
                    success: function(result) { alert(result.toString()); },
                    error: function(ex) { alert(ex.responseText); }
                }
                );
            } 
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <input type="button" onclick="send()" value="Click me" />
        </form>
    </body>
    </html>
    b.aspx.cs        protected void Page_Load(object sender, EventArgs e)
            {
                if (Request["a"] == null)
                {
                    Response.Write("failed");
                    Response.End();
                }
                if (Request["a"].ToString() == "1")
                {
                    Response.Write("aaaaaaa");
                    Response.End();
                } 
            }
      

  12.   

    为什么我头上加了这句就不行啊!?
    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>