The content of ajaxtest.htm on the front page is as follows:
| The code is as follows: |
Copy code |
<! DOCTYPE html PUBLIC "-// W3C // dtd xhtml 1.0 Transitional // EN" http://www.111cn.net> <Html xmlns = "http://www.w3.org/1999/xhtml"> <Head> <Title> This Page interacts with the background in different ways </title> <Script type = "text/javascript" src = "JS/jquery-1.4.2.min.js"> </script> <Script type = "text/javascript"> // Use the jquery library for ajax interaction $ (Document). ready (function (){ // Execute an ajax request. The command tells the backend method to call. $. Get ("Handler. ashx", {command: "method1", value: "chentao"}, function (data ){ Alert (data ); }); // Make an ajax request, and the command tells the background to call the method2 method $. Get ("Handler. ashx", {command: "method2", value: "tangyu"}, function (data ){
Alert (data ); }) </Script> </Head> <Body> </Body> </Html> |
Set up a Handler. ashx page in the background as follows:
| The code is as follows: |
Copy code |
<% @ WebHandler Language = "C #" class = "Handler" %> Using System; Using System. Web; Public class Handler: IHttpHandler { Public void ProcessRequest (HttpContext context ){ Context. Response. ContentType = "text/plain "; If (context. Request ["command"]! = Null) { // Obtain the command sent from the foreground and determine the method to call. String command = context. Request ["command"]. ToString (); String data = context. Request ["value"]. ToString (); Switch (command) { Case "method1 ": Method1 (context ); Break; Case "method2 ": Method2 (context ); Break; Default: Break; } } } Public bool IsReusable { Get { Return false; } } Public void method1 (HttpContext context) { Context. Response. Write ("hello," + context. Request ["value"]. ToString ()); } Public void method2 (HttpContext context) { Context. Response. Write ("hello," + context. Request ["value"]. ToString ()); }
} |
If there are multiple methods, there will be many judgments in the switch case. Consider using a simpler method. Use reflection.
| The code is as follows: |
Copy code |
<% @ WebHandler Language = "C #" class = "Handler" %> Using System; Using System. Web; Public class Handler: IHttpHandler { Public void ProcessRequest (HttpContext context ){ Context. Response. ContentType = "text/plain "; If (context. Request ["command"]! = Null) { // String command = context. Request ["command"]. ToString (); System. Reflection. MethodInfo method = this. GetType (). GetMethod (command ); If (method! = Null) { Method. Invoke (this, new object [] {context }); } } } Public bool IsReusable { Get { Return false; } } Public void method1 (HttpContext context) { Context. Response. Write ("hello" + context. Request ["value"]. ToString ()); } Public void method2 (HttpContext context) { Context. Response. Write ("hello," + context. Request ["value"]. ToString ()); } } |
Using reflection greatly simplifies the program.
========================================================== ==================
Use the aspx page to interact with ajax
Create an aspx page WebMethod. aspx
Delete the remaining parts of the WebMethod. aspx page and retain only
| The code is as follows: |
Copy code |
| <% @ Page Language = "C #" AutoEventWireup = "true" CodeFile = "WebMethod. aspx. cs" Inherits = "WebMethod" %> |
This statement
The content of WebMethod. aspx. cs is as follows:
| The code is as follows: |
Copy code |
Using System; Using System. Collections; Using System. Configuration; Using System. Data; Using System. Linq; Using System. Web; Using System. Web. Security; Using System. Web. UI; Using System. Web. UI. HtmlControls; Using System. Web. UI. WebControls; Using System. Web. UI. WebControls. WebParts; Using System. Web. Services; Using System. Reflection; Public partial class WebMethod: System. Web. UI. Page { Protected void Page_Load (object sender, EventArgs e) { String methodName = HttpContext. Current. Request. PathInfo. Substring (1 ); // Response. Write (methodName ); MethodInfo method = this. GetType (). GetMethod (methodName ); If (method! = Null) { Response. Write (method. Invoke (this, new object [] {}); } // Response. Write (GetResult ()); } [WebMethod (EnableSession = true)] Public string GetResult () { // Return "hello "; If (HttpContext. Current. Request ["name"]! = Null) { String value = HttpContext. Current. Request ["name"]. ToString (); // HttpContext. Current. Request. PathInfo; Return "{'name': '" + value + "'}"; } Else { Return "{name: 'error '}"; } } } Perform ajax interaction between the test.html page and the WebMethod. aspx page. Content of the test.html page <! DOCTYPE html PUBLIC "-// W3C // dtd xhtml 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <Html xmlns = "http://www.w3.org/1999/xhtml"> <Head> <Title> use the aspx page for interaction </title> <Script type = "text/javascript" src = "JS/jquery-1.4.2.min.js"> </script> <Script type = "text/javascript"> $ (Document). ready (function (){ $. Ajax ({ Type: "POST ", Url: "WebMethod. aspx/GetResult ", Data: "name = chentao ", DataType: "text ", Success: function (d ){ Alert (d ); } }); }); </Script> </Head> <Body> </Body> </Html> |