1. 程式人生 > >【Asp.net】使用Ajax和Jquery在前臺向後臺傳引數並返回值的例項

【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];

四、小結

      這些都是比較常用的,無論是任何語言,一定要以虔誠的心態去學習,這樣才能提高自己的熟練度,不至於忘記了怎麼做。加油!學習要心細。