【Asp.net】使用Ajax和Jquery在前台向后台传参数并返回值的实例

2017-01-10 19:18:25来源:作者:人点击

一、前言

以前在做项目的时候遇到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 = "http://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];

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台