【Asp.net】使用Ajax和Jquery在前台向后台传参数并返回值的实例
程序员文章站
2022-03-29 20:47:27
一、前言
以前在做项目的时候遇到asp.net前后台通过AJAX传递数据,当时做完了,自己一直没有总结,虽说上手快,但是还是要总结一下,以供以后的学习,思考。
二、要点分析...
一、前言
以前在做项目的时候遇到asp.net前后台通过AJAX传递数据,当时做完了,自己一直没有总结,虽说上手快,但是还是要总结一下,以供以后的学习,思考。
二、要点分析asp.net的前台可以通过按F7进入后台,但是要想通过AJAX在后台捕获AJAX传过来的参数的时候就要添加[WebMethod] ,才可以。不过可以在asp.net捕获AJAX使用很多的是用“一般处理程序”来完成。具体操作看下文。
三、使用方案在这里小编给出两种方案来实现数据的传递:
方案一 直接调用后台前台:
<%--引入JQuery--%> <script src="js/jquery-2.1.1.min.js"></script> <%--向后台利用AJAX传递参数,调用后台参数--%> <script type="text/javascript"> $(function () { <%--当txtUserName失去焦点的时候触发--%> $('#txtUserName').blur(function () { var username = $(this).val(); $.ajax({ type: "post", contentType: "application/json",//传值的方式 url: "index.aspx/GetValueAjax",//WebAjaxForMe.aspx为目标文件,GetValueAjax为目标文件中的方法 data: "{username:'" + username + "'}",//username 为想问后台传的参数(这里的参数可有可无) success: function (result) { alert(result.d);//result.d为后台返回的参数 } }) }) }) </script> <input id="txtUserName" type="text" />
后台:一定要添加[WebMethod]
[WebMethod]//方法前边必须添加 [WebMethod] public static string GetValueAjax(string username)//这个方法需要是静态的方法要用到关键字static { //在这里可以对传进来的参数进行任何操作 return username; }方案二 一般处理程序
创建一般处理程序ajaxtest.ashx后,完成如下操作:
前台:
<%--引入JQuery--%> <script src="js/jquery-2.1.1.min.js"></script> <%--使用AJAX向一般处理程序传递参数,调用函数--%> <script type="text/javascript"> $(function () { <%--当txtYiBan失去焦点的时候触发--%> $('#txtYiBan').blur(function () { var username = $(this).val(); $.ajax({ type: "GET", url: "ajaxtest.ashx?json=" + username,//ajaxtest.ashx为目标文件 dataType: "text", success: function (result) { alert(result.d);//result.d为后台返回的参数 } }) }) }) </script> <input id="txtYiBan" type="text" />
ajaxtest.ashx 一般处理程序:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Web.SessionState; namespace aspAjaxTest { /// <summary> /// ajaxtest 的摘要说明 /// </summary> [WebService(Namespace = "https://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class ajaxtest : IHttpHandler { HttpContext Context; /// <summary> /// 获取传的值,并调用其他的方法 /// </summary> ///<cke:param name="context"></cke:param> public void ProcessRequest(HttpContext context) { Context = context; context.Response.Clear(); context.Response.ContentType = "text/html; charset=utf-8"; //获取传来的值 string methodName = GetQueryString("json"); //可以调用其他方法------看下文 } /// <summary> /// 获取传的值 /// </summary> ///<cke:param name="name"></cke:param> /// <returns></returns> string GetQueryString(string name) { //获取传的值 return Context.Request.Params[name]; } public bool IsReusable { get { return false; } } } }
可以调用的方法:
private string GetJsonStr(string methodName, string session, string strname, string Userid, string strWhere) { string jsonString = ""; switch (methodName) { case "GetWorksContent": //调用分页的效果 jsonString = new JCZB.YMGJ.Web.Web.WebManager.home.AddHistory().GetRMContent(session); //jsonString = "1"; break; case "GetWorkssetContent": //调用分页的效果 jsonString = new JCZB.YMGJ.Web.Web.WebManager.home.worksset().GetRMContent(session,strname,Userid); break; case "GetWorkContent": //调用分页的效果 jsonString = new JCZB.YMGJ.Web.Web.WebManager.home.works().GetRMContent(session, strWhere); break; case "GetWorkssetByTimeContent": //调用分页的效果 jsonString = new JCZB.YMGJ.Web.Web.WebManager.home.workssetByTime().GetRMContent(session, strname, Userid); break; case "GetWorkssetByPositionContent": //调用分页的效果 jsonString = new JCZB.YMGJ.Web.Web.WebManager.home.workssetByPosition().GetRMContent(session, strname, Userid); break; case "GetWorkssetByArtistidContent": //调用分页的效果 jsonString = new JCZB.YMGJ.Web.Web.WebManager.home.workssetByArtistid().GetRMContent(session, strname, Userid); break; } return jsonString; }四、学到什么 在aspx的后台可以用如下的方式来捕获参数:
workstateValue = Request.QueryString["workstateValue"];在一般处理程序中可以用:
return Context.Request.Params[name];
上一篇: .Net——动态调用方法
下一篇: 以淘宝新版首页为实例讲述网页布局