通過ajax訪問aspx的CodeBehind中的方法


引言

在項目中突然看到,aspx中的ajax可以訪問aspx.cs中的方法,覺得很新奇,也許是lz少見多怪,不過,真的有發現新大陸似的那種興奮,你也許知道這代表什么,學會了這種方式,代表你以后,可以建更少的頁面,更少ashx,更少的.....能不興奮嗎?在lz的印象中,ajax一般都和一般處理程序聯系起來的,請求另外的aspx頁面就不說了,而請求自身CodeBehind中的方法真的很少見,這里記錄一下,也許也有跟我一樣不知道的朋友,希望能幫到你。只是知道ajax可以訪問webservice中加webmethod特性的方法,沒想到也可以訪問aspx中加webmethod的方法。幸虧現在知道了。

ajax配置

測試:模擬一個小學二年級的加法運算,通過ajax將值傳給default.aspx.cs中的Add方法,通過該方法完成計算,返回結果。

Default.aspx

ajax的使用方法這里就不多說了。

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Wolfy.AjaxSelf.Default" %>
 2 
 3 <!DOCTYPE html>
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 8     <title></title>
 9     <script type="text/javascript" src="jquery-1.10.2.js"></script>
10     <script type="text/javascript">
11         $(function () {
12             $("#btn").click(function () {
13                 var num1 = $("#num1").val();
14                 var num2 = $("#num2").val();
15                 $.ajax({
16                     type: "POST",//
17                     url: "Default.aspx/Add",
18                     data: "{num1:'"+num1+"',num2:'"+num2+"'}",
19                     contentType: "application/json",
20                     dataType: "json",
21                     success: function (data) {
22                         $("#num3").val(data.d);
23                     },
24                     error: function (msg) {
25                         alert(msg.status);
26                     }
27                 });
28             });
29         });
30     </script>
31 </head>
32 <body>
33     <form id="form1" runat="server">
34         <div>
35             <input type="text" id="num1" name="name" value="1" />
36             <label>+</label>
37             <input type="text" id="num2" name="name" value="1" />
38             <input type="button" name="name" id="btn" value="=" />
39             <input type="text" id="num3" name="name" value="1" />
40 
41         </div>
42     </form>
43 </body>
44 </html>

Default.aspx.cs

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Services;
 6 using System.Web.UI;
 7 using System.Web.UI.WebControls;
 8 namespace Wolfy.AjaxSelf
 9 {
10     public partial class Default : System.Web.UI.Page
11     {
12         protected void Page_Load(object sender, EventArgs e)
13         {
14 
15         }
16         [WebMethod]
17         public static int Add(int num1, int num2)
18         { return num1 + num2; }
19     }
20 }

測試結果

注意

ajax中的type必須為“POST”,否則:

Ajax中的data,中鍵必須與方法中參數名字相同,否則:

codeBehind中的方法必須加WebMethod特性,必須為靜態方法,否則:

這是其中需要注意的地方,至於為什么必須是靜態的,lz也問了很多人,也不是很懂,這里就不班門弄斧了,有知道的朋友,留下你的足跡,也可以相互溝通一下。

總結

這種方式,也是在看項目中,遇到的,真的是第一次見,真的很開心,現在遇到了。遇到了,就拿出來,記錄一下,分享一下,開心一下。

這種方式跟ajax訪問webservice確實很像,但是為什么必須是靜態的呢?也許你知道,請一起討論,讓更多的朋友也知道。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM