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

一、前言

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

四、小结

      这些都是比较常用的,无论是任何语言,一定要以虔诚的心态去学习,这样才能提高自己的熟练度,不至于忘记了怎么做。加油!学习要心细。

评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你个佬六

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值