我将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部分启动一个新页面,最后一切正常,除了这个参数捕获。
欢呼声
答案 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>