ASP.NET没有看到Ajax参数

时间:2010-01-08 14:56:53

标签: asp.net post jquery

我将Ajax参数从源ASP.NET页面传递到目标ASP.NET页面。代码段如下所示:

$('#sourcePageBtn').click( function() {
     $.post('destination.aspx', { name: "John", time: "2pm" }, function(data) {                    
     });
});

我正在尝试访问目标aspx文件的脚本部分中的参数,即。

<script language="C#" runat="server">
    protected void Page_Load ( object src, EventArgs e) 
    {
     //Creating dynamic asp controls here
    }
</script>

我对脚本部分的Page_Load中的参数的特殊需求源于这样一个事实:我在Page_Load中创建了一些依赖于这些参数的动态图表控件。

问题: - 我没有在目标文件中看到参数。我尝试使用Request["name"]Request["time"]来抓取它们。

请告诉我哪里出错了。

P.S。 - 我有这个SO post处理从源页面的jQuery部分启动一个新页面,最后一切正常,除了这个参数捕获。

欢呼声

2 个答案:

答案 0 :(得分:1)

不是将其作为发布请求发送,而是发送为get请求并尝试Request.Params [0]和Request.Params [1]

我刚创建了一个新的异步httphandler,而ajax调用就像:

$("#btnAjaxLoad").click(function() {
                $.ajax({ type: "GET",
                data: ({name : 'John', time : '8pm'}),                
                url: "DataSourceAsync.ashx",  
                contentType: "text/html; charset=utf-8",  
                dataType: "html",  
                success: function(data) { $("#AJAXGenerated").show(), $("#AJAXGenerated").html(data); $("#loading").hide(); }
                });
        });

现在我可以在beginProcess事件中访问Jhon和8pm作为context.Request.Params [0]和context.Request.Params [1],但是一旦我改变了类型:GET到POST两个参数都是不在那里。

答案 1 :(得分:1)

很难说没有看到你的所有代码,但它可能是2个问题中的一个(或两者都有)。

首先是什么样的按钮?提交按钮? asp.net按钮(什么是提交按钮)或计划按钮?

如果他们是提交按钮,那么这就是你的问题,因为这将完整回发,你的ajax请求不会发生。

第二种情况可能是你的jquery代码你没有在加载时绑定click函数,所以函数永远不会被绑定,因此当你点击一个按钮它就不会做任何事情。

<强>代码

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_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>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">


    </script>
    <script type="text/javascript">
        $(function()
        {
            $('#sourcePageBtn').click(function()
            {
                $.post('Default.aspx', { name: "John", time: "2pm" }, function(data)
                {
                });
            });
        });


</script>



</head>
<body>
    <form id="form1" runat="server">
    <div>
         <input id="sourcePageBtn" type="button" value="button" />
         <%--asp button won't work as it does full post back --%>
        <asp:Button ID="sourcePageBtn" runat="server" Text="Button" />
    </div>

    </form>
</body>
</html>

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

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string test = Request["name"];
    }

}

如果将其作为脚本标记,也会产生相同的结果。

<script language="C#" runat="server">
    protected void Page_Load ( object src, EventArgs e) 
    {
     //Creating dynamic asp controls here
        string test = Request["name"];
    }
</script>