js调用后台方法[@more@]一.AjaxPro的使用
1 .在项目中添加引用,浏览找到AjaxPro. 2 .dll文件 2 .在Web.config中的system.web里面写入以下代码 configuration > < system.web > < httpHandlers > < add verb = " * " path = " *.ashx " type = " AjaxPro.AjaxHandlerFactory,AjaxPro.2 " /> httpHandlers > system.web > < // configuration> 3 .在加载事件中,加入 AjaxPro.Utility.RegisterTypeForAjax( typeof (类名)); 4 .写的方法都要用 [AjaxPro.AjaxMethod]开头,然后在写方法 5 .调用时必须写清楚 命名空间名.类名.方法,例:WebUI._Default.getData(); 6 .调用可分两中方法(同步调用,异步调用) // 在后台写的无参方法 [AjaxPro.AjaxMethod] public string getStr() { return " hello my friends " ; } // 在后台写的有参方法 [AjaxPro.AjaxMethod] public string getString( string str) { return str + " Say: hello my friends " ; } a.同步调用 ( 1 ).拖入html控件button ( 2 ).双击,自动显示在.aspx的脚本中 ( 3 ).在里面写入你要输入的内容 例: // ------------------同步调用无参----------- function Button1_onclick() { var res = WebUI._Default.getStr(); alert(res.value); } // ------------------同步调用有参------------ function Button2_onclick() // TextBox1为服务器控件 { var str = document.getElementById( " <%=TextBox1.ClientID%> " ).value; var res = WebUI._Default.getStr(str); alert(res.value); } b.异步调用 ( 1 ).拖入html控件button ( 2 ).双击,自动显示在.aspx的脚本中 ( 3 ).在里面写入你要输入的内容 例: // -----------------异步调用无参----------------- function Button3_onclick() { WebUI._Default.getStr(getStrCallBack); } function getStrCallBack(res) { alert(res.value); } // -----------------异步调用有参----------------- function Button4_onclick() { var str = document.getElementById( " <%=TextBox1.ClientID %> " ).value; WebUI._Default.getString(str,getStringCallBack); } function getStringCallBack(res) { alert(res.value); } 7 .调用对象 // 对象 [AjaxPro.AjaxMethod] public Class getClass() { Class cla = new Class(); cla.C_Id = 100 ; cla.C_Name = " 34班 " ; cla.Count = 20 ; return cla; } // ------------------同步调用对象----------- function Button5_onclick() { var res = WebUI._Default.getClass().value; alert( " 班级编号: " + res.C_Id + " 名称: " + res.C_Name + " 人数: " + res.Count); } // ------------------异步调用对象----------- function Button6_onclick() { WebUI._Default.getClass(getClassCallBack); } function getClassCallBack(clas) { var res = clas.value; alert( " 班级编号: " + res.C_Id + " 名称: " + res.C_Name + " 人数: " + res.Count); } 8 .数据集的使用 // 方法 [AjaxPro.AjaxMethod] public DataSet getInfo() { return WebUI.GetDataSet.getList(); } // --------------------异步调用数据集-------------- function Button8_onclick() { WebUI._Default.getInfo(getDataSetCallBack); } function getDataSetCallBack(res) { var dataset = res.value; var strHtml = "" ; strHtml += ' ' ; strHtml += ' ' ; strHtml += ' 学生编号 ' ; strHtml += ' 名称 ' ; strHtml += ' 年龄 ' ; strHtml += ' ' ; for ( var i = 0 ;i < dataset.Tables[ 0 ].Rows.length;i ++ ) { strHtml += ' ' ; strHtml += ' ' + dataset.Tables[ 0 ].Rows[i].stu_id + ' ' ; strHtml += ' ' + dataset.Tables[ 0 ].Rows[i].stu_name + ' ' ; strHtml += ' ' + dataset.Tables[ 0 ].Rows[i].stu_age + ' ' ; strHtml += ' ' ; } strHtml += '
' ; thedata.innerHTML = strHtml; // thedata是一个
中的thedata } 9 .验证码的使用 // ----------------------验证码的使用(必须采用同步调用)---------------------- // 验证码的使用 [AjaxPro.AjaxMethod] public bool ValidCodeData( string code) { return (HttpContext.Current.Session[ " CheckCode " ].ToString() == code); } function Button9_onclick() { var code = document.getElementById( " <%=TextBox2.ClientID %> " ).value; var bool = WebUI._Default.ValidCodeData(code).value; if ( bool == true ) { alert( " ok " ); } else { alert(" no " ); } } 二,直接调用:
javascript中: <%= 后台方法 %>
function says()
{
alert( " <%=Say()%> " );
}
function del()
{
alert( " <%=DeleteByID(8)%> " ); // DeleteByID(8)后台方法名
}
三,采用ICallbackEventHandler回调
// 必须声明System.Web.UI.ICallbackEventHandler接口
public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
// 定义一个回调的返回值
private string Result;
// 定义两个变量,用来接收页面传过来到操作数
private string Num1;
private string Num2;
protected void Page_Load( object sender, EventArgs e)
{
}
///
/// 该方法是回调执行的方法,根据参数在这个方法中处理回调的内容,该方法没有返回值
///
/// 此参数是从客户端传过来的
public void RaiseCallbackEvent( string eventArgument)
{
// eventArgumeng 为javascript从客户端传递的参数,本例传过来三个参数用“/”分割将每个参数取出存入数组
string [] PagParams = eventArgument.Split( ' / ' );
Num1 = PagParams[ 1 ];
Num2 = PagParams[ 2 ];
// 根据第一个参数(所选的操作符),调用不同的执行函数
switch (PagParams[ 0 ])
{
case " 0 " :
Result = add(); break ;
case " 1 " :
Result = sub(); break ;
case " 2 " :
Result = multi(); break ;
case " 3 " :
Result = division(); break ;
}
}
///
/// 该方法是返回回调的结果给客户端
///
///
public string GetCallbackResult()
{
return Result;
}
// 一下四个函数是通过RaiseCallbackEvent方法,调用的回调要执行操作的函数
private string add()
{
double addResult = double .Parse(Num1) + double .Parse(Num2);
return addResult.ToString();
}
private string sub()
{
double addResult = double .Parse(Num1) - double .Parse(Num2);
return addResult.ToString();
}
private string multi()
{
double addResult = double .Parse(Num1) * double .Parse(Num2);
return addResult.ToString();
}
private string division()
{
double addresult = double .Parse(Num1) / double .Parse(Num2);
return addresult.ToString();
}
} 我的实现,前台一个textbox,一个普通button,单击按钮,将textbox中的值插入数据库
function test()
{
var names=document.getElementById("TextBox1").value;
var result= _Default.insert(names).value;
alert(result);
}
后台 #region
[AjaxPro.AjaxMethod]
public static string insert(string name)
{
string flag = "提交失败";
SqlConnection conn = DbOpen.DbaseConfigConnect();
SqlCommand command = new SqlCommand();
command.Connection = conn;
string str = "update WBLXDJB set WXR='" + name + "' where BXBH='DIA201'";
command.CommandText = str;
if (command.ExecuteNonQuery() == 1)
flag = "提交成功";
return flag;
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
}
记得引用AjaxPro.2.dll
web.config
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/54654/viewspace-1058553/
,如需转载,请注明出处,否则将追究法律责任。