脚本中调用后台带参函数
脚本中当点击一个<p></p>标签时调用后台一个带参数函数,该函数在当前页面(aspx)的后台,比如demo.aspx,那么后台函数就在demo.aspx.cs中(用过VS的都知道吧).而且该函数是非静态的。网上查了很多资料,都没找到解决的方案,
有的说用JQUERY的$.ajax()调用,但是貌似只能调用静态函数吧
用<%=function()%> 又不能传递参数,网上说的传参的形式我都试过,不行,参数根本就没传过去。
纠结啊,弄了几天了都没解决,求大神指教。~~~~ 内牛满面
关键:1.函数在本页面的后台文件CS中
2.函数带有一个参数,返回值可以有可无
--------------------编程问答-------------------- 做一个服务器控件,button什么的,hide,然后getelement,click什么的服务器控件在后台,再func什么的,参数传递,可以设置value什么的,大概就是什么的,如果你不知道我说什么的,我也不知道什么的 --------------------编程问答-------------------- JavaScript 调用 ASP.NET 服务器端方法的最简单的方法 --------------------编程问答-------------------- --------------------编程问答-------------------- 补充一下,后台函数中有对页面中 服务器控件比如sqldatasource的处理 --------------------编程问答-------------------- $.ajax() 调用一个 地址demo.aspx,在 demo.aspx.cs里面 处理调用的函数。 --------------------编程问答-------------------- 楼上兄弟的方法我试过 调用的只能是静态static 而static 函数 不能处理 服务器控件 --------------------编程问答-------------------- 非静态也可以啊
ajax请求"x.aspx?id=参数"
x.aspx里
if(Request.QueryString["id"]!=null)
{
//执行非静态的方法
} --------------------编程问答-------------------- --------------------编程问答-------------------- 有例子吗?
$.ajax({
type: "post",
url: "../Back/UserManage_SchoolLoad.aspx",
data: { Code: UnitName },
success: function (data) {
是这样吗? --------------------编程问答--------------------
<head>
<title></title>
<script>
function myfunction() {
var ajax = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
ajax.open("GET", "demo.aspx?id=xxxx", true);
ajax.onreadystatechange = function () {
if (ajax.readyState == 4) {
if (ajax.status == 200) {
alert(ajax.responseText);
}
}
}
ajax.send(null);
}</script>
</head>
<body>
<form id="form1" runat="server">
<p onclick="myfunction()">点击我</p>
</form>
</body>
</html>
demo.aspx.cs
protected void Page_Load(object sender, EventArgs e)--------------------编程问答-------------------- post方法
{
if (Request.QueryString["id"] != null)
{
doIt(Request.QueryString["id"]);
}
}
void doIt(String x)
{
Response.ClearContent();
Response.Write("你的参数:" + x);
Response.End();
}
<%@ Page Language="C#" EnableViewState="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<head>
<title></title>
<script>
function myfunction() {
var sendData = "A=aaaa&B=" + encodeURIComponent("中文内容");
var ajax = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
ajax.open("POST", "demo.aspx?id=xxxx", true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("Content-length", sendData.length);
ajax.setRequestHeader("Connection", "close");
ajax.onreadystatechange = function () {
if (ajax.readyState == 4) {
if (ajax.status == 200) {
alert(ajax.responseText);
}
}
}
ajax.send(sendData);
}</script>
</head>
<body>
<form id="form1" runat="server">
<p onclick="myfunction()">点击我</p>
</form>
</body>
</html>
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["id"] != null)
{
doIt(Request.QueryString["id"]);
}
}
void doIt(String x)
{
Response.ClearContent();
Response.Write("你的参数:" + Request.Form["A"] + "," + Request.Form["B"]);
Response.End();
} --------------------编程问答-------------------- 必须在Page_Load里吗?
因为调用的是当前页面的后台文件,请求的时候Page_load函数会执行吗? 当前页面不是已经加载过了吗 --------------------编程问答-------------------- ajax就是一种请求,跟你自己从浏览器里面访问是完全一样的道理。Page_load函数会执行 --------------------编程问答-------------------- 我调试的时候怎么弹出这个啊:
--------------------编程问答-------------------- 你是本页的ajax调用本页的程序吧?
你的意思是使用UpdatePanel 控件的样子吧 --------------------编程问答-------------------- Response.ClearContent();是必须的 --------------------编程问答-------------------- 调了半天还是不行 我具体说下问题吧:
UpdatePanel用了的 里面放了一个gridview ,外面放了一个sqldatasource
后台处理函数是动态绑定gridview,现在在脚本中已经取到了要传递的值,就是点击<p><p>元素取到的值,后台函数根据这个值动态改变sqldatasource的seleccommand属性,这样就可以实现gridview动态绑定。
现在问题就是 不知道如何调用后台函数,这个函数肯定不能写到其他页面,因为对当前页面控件进行操作的。
补充:.NET技术 , C#