XMLHttpRequest+WebForm模式(接口IHttpHandler)實現ajax

?

首先引入ajax.js文件 創建xmlhttpRequest對象

ContractedBlock.gifExpandedBlockStart.gifCode
//創建XMLHttpRequest對象
var?xmlHttp;
function?newXMLHttpRequest()?{

????
if?(window.XMLHttpRequest)?{
????????xmlHttp?
=?new?XMLHttpRequest();
????}?
else?if?(window.ActiveXObject)?{
????????
try?{?
????????????xmlHttp?
=?new?ActiveXObject("Msxml2.XMLHTTP");
????????}?
catch?(e1)?{?
????????????
try?{
????????????????xmlHttp?
=?new?ActiveXObject("Microsoft.XMLHTTP");
????????????}?
catch?(e2)?{
????????????}?
????????}
?????}
???????
return?xmlHttp;
}?

//發起異步請求
function?sendRequest(){
????newXMLHttpRequest();
????
var?url="AjaxHandler.ashx?name="+document.getElementById("txtName").value;
??????xmlHttp.open(
"GET",url,true);
????xmlHttp.onreadystatechange
=onSuccessCallBack;
????xmlHttp.send(
null);
}

//回調處理函數
function?onSuccessCallBack(){
????
if?(xmlHttp.readyState?==?4)?
????{
????????
if?(xmlHttp.status?==?200)?
????????{
????????????document.getElementById(
"result").innerHTML?=?xmlHttp.responseText;
????????}?
????????
else?
????????{
????????????document.getElementById(
"result").innerHTML=result.status;
????????}
????}
}


//HTTP 處理程序
???IHttpHandler 接口:定義 ASP.NET 為使用自定義 HTTP 處理程序同步處理 HTTP Web 請求而實現的協定。
如果您的處理程序將訪問會話狀態值,它必須實現 IRequiresSessionState 接口(不包含任何方法的標記接口)。?
創建自定義 HTTP 處理程序

若要創建自定義 HTTP 處理程序,請創建實現 IHttpHandler 接口的類來創建一個同步處理程序。或者,可以實現 IHttpAsyncHandler 來創建一個異步處理程序。兩種處理程序接口都要求您實現 IsReusable 屬性和 ProcessRequest 方法。 IsReusable 屬性指定 IHttpHandlerFactory 對象(實際調用適當處理程序的對象)是否可以將處理程序放置在池中,并且重新使用它以提高性能。如果處理程序不能放在池中,則在每次需要處理程序時工廠都必須創建處理程序的新實例。

ProcessRequest 方法負責處理單個 HTTP 請求。在此方法中,將編寫生成處理程序輸出的代碼。

HTTP 處理程序有權訪問應用程序上下文。其中包括請求用戶的標識(如果已知)、應用程序狀態和會話信息。當請求 HTTP 處理程序時,ASP.NET 將調用相應處理程序的 ProcessRequest 方法。您在處理程序的 ProcessRequest 方法中編寫的代碼將創建一個響應,此響應隨后發送回請求瀏覽器。

ContractedBlock.gifExpandedBlockStart.gifCode
using?System;
using?System.Collections;
using?System.Data;
using?System.Linq;
using?System.Web;
using?System.Web.Services;
using?System.Web.Services.Protocols;


namespace?Ajax
{
????
///?<summary>
????
///?$codebehindclassname$?的摘要說明
????
///?</summary>
????[WebService(Namespace?=?"http://tempuri.org/")]
????[WebServiceBinding(ConformsTo?
=?WsiProfiles.BasicProfile1_1)]
????
public?class?AjaxHandler?:?IHttpHandler
????{

????????
public?void?ProcessRequest(HttpContext?context)
????????{
????????????context.Response.ContentType?
=?"text/plain";//顯示html原代碼.
????????????
//response.ContentType?="image/gif"?
????????????
//response.ContentType?="image/jpeg"?
????????????
//response.ContentType?="text/html"?
????????????string?name?=?context.Request.QueryString["name"];
????????????context.Response.Write(name.ToUpper());
????????}

????????
public?bool?IsReusable
????????{
????????????
get
????????????{
????????????????
return?false;
????????????}
????????}
????}
}

前臺頁面:

?

ContractedBlock.gifExpandedBlockStart.gifCode
<head?runat="server">
????
<title>XMLHttpRequest+WebForm模式</title>
????
<script?type="text/javascript"?src="Ajax.js"></script>
</head>
<body>
<input?type="text"?id="txtName"?/>
<input?type="button"?value="Request"?onclick="JavaScript:sendRequest();"?/>
<hr?/>
<div?id="result"></div>
</body>
</html>

或者通過客戶端向另一個頁面傳遞參數,由該頁面處理數據,把結果輸出到http流中?
?apsx.cs頁面
?? public partial class AjaxForm : System.Web.UI.Page
??? {
??????? protected void Page_Load(object sender, EventArgs e)
??????? {
??????????? if (!IsPostBack)
??????????? {
??????????????? string name = Request.QueryString["name"];
??????????????? Response.Write(name.ToUpper());
??????????????? Response.Flush();
??????????????? Response.End();
??????????? }
??????? }
??? }

//xmlhttpRequest對象
?? //發起異步請求
function sendRequest(){
??? newXMLHttpRequest();
??? var url="AjaxForm.aspx?name="+document.getElementById("txtName").value;
? ?xmlHttp.open("GET",url,true);
??? xmlHttp.onreadystatechange=onSuccessCallBack;
??? xmlHttp.send(null);
}

轉載于:https://www.cnblogs.com/hubcarl/archive/2009/09/15/1567251.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536355.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536355.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536355.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UVA----10082?WERTYU【字符串】

WERTYU UVA - 10082 題目傳送門 題目大意&#xff1a;按照所給的鍵盤樣式&#xff0c;以及錯誤的字符串&#xff0c;輸出正確的字符串&#xff0c;其輸入的每一個字符都按照鍵盤樣式向右錯移了一位。 解決方法&#xff1a;將整個鍵盤用數組存起來&#xff0c;遍歷一遍即可。…

關于C生成的匯編與C++生成的匯編在函數名稱上的差異

最近用到ucos&#xff0c;這個RTOS本身是用C語言和部分匯編編寫&#xff0c;而自己又打算用C來寫應用&#xff0c;在其中遇到幾個問題&#xff0c;一番折騰之后&#xff0c;讓我更加深刻認識到了在一些一般不注意的細節上&#xff0c;C與C的不同。 1、對于ucos&#xff0c;雖…

UVA401????????Palindromes【字符串】

Palindromes UVA - 401 題目傳送門 題目大意&#xff1a;給你一個字符串&#xff0c;判斷其是回文串還是鏡像串。 AC代碼&#xff1a; #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #include <cstdlib> #…

IIS 5 與IIS 6 原理介紹

[ 轉] ASP.NET Process Model之一&#xff1a;IIS 和 ASP.NET ISAPI 前幾天有一個朋友在MSN上問我“ASP.NET 從最初的接收到Http request到最終生成Response的整個流程到底是怎樣的&#xff1f;”我覺得這個問題涉及到IIS和ASP.NETASP.NET Runtime的處理模型的問題&#xff0c;…

UVA340????????Master-Mind Hints【數組】

Master-Mind Hints UVA - 340 題目傳送門 題目大意&#xff1a;先輸入一個整數n&#xff0c;表示有n個數字&#xff0c;下面第一行代表正確答案&#xff0c;其下每一行代表用戶猜的答案&#xff0c;需統計其有多少數字位置正確&#xff08;A&#xff09;&#xff0c;有多少數…

教你如何把自己從好友的QQ中刪除

在QQ中&#xff0c;有些人看了不太順眼&#xff0c;真不知當初為何讓他加自己為好友的&#xff01; 那有什么辦法&#xff0c;可以把自己從對方的QQ中刪除呢&#xff1f; 其實&#xff0c;用QQ就可以輕松搞定&#xff01; 讓我來為你支一招吧&#xff01; 打開QQ&#xff0…

UVA1583?Digit Generator

Digit Generator UVA - 1583 題目傳送門 題目大意&#xff1a;若x的各位數之和加上x本身等于y&#xff0c;則證明x是y的生成元&#xff0c;求輸入數字n的最小生成元。 AC代碼&#xff1a; #include <cstdio> #include <iostream> #include <algorithm> …

C++內存詳解

偉大的Bill Gates 曾經失言&#xff1a; 640K ought to be enough for everybody — Bill Gates 1981 程序員們經常編寫內存管理程序&#xff0c;往往提心吊膽。如果不想觸雷&#xff0c;唯一的解決辦法就是發現所有潛伏的地雷并且排除它們&#xff0c;躲是躲不了的。本文的內…

UVA1584????????Circular Sequence【字符串】

Circular Sequence UVA - 1584 題目傳送門 題目大意&#xff1a;輸入一個環形字符串&#xff0c;需輸出其最小字典序的形式的字符串。 AC代碼&#xff1a; #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #includ…

UVA1585 Score

Score UVA - 1585 題目傳送門 題目大意&#xff1a;輸入一個字符串&#xff0c;O的分數為1&#xff0c;若出現連續的O&#xff0c;如OOOO...&#xff0c;分數為1,2,3,4...&#xff0c;X為0分&#xff0c;求最終的分數 AC代碼&#xff1a; #include <cstdio> #includ…

operater int()

class Number { int number; public: explicit Number(int n){number n;} operator int() //注意一定不能聲明返回值 { return number; } }; int main () { Number n1 Number(100); int n2 n1; cout << n2 << endl; re…

UVA1586???????? Molar mass

Molar mass UVA - 1586 題目傳送門 題目大意&#xff1a;給你一個只包含C,H,O,N分子式&#xff0c;其中C,H,O,N的原子量分別為&#xff1a;12.01,1.008,16.00,14.01&#xff0c;求其分子量 AC代碼&#xff1a; #include <cstdio> #include <iostream> #includ…

SharePoint v3:忘掉模擬用戶Impersonate,SPSecurity.RunWithElevatedPrivileges來了

回顧&#xff1a; 在SharePoint V2 大家應該都用過模擬用戶Impersonate這個功能&#xff0c; 這個功能用來暫時提升某個用戶的權限&#xff0c;比如某個普通用戶的本來不能修改某個列表的值&#xff0c;但是我們功能需要在修改。 缺點&#xff1a; 我們使用這個模擬用戶功能…

UVA1225????????Digit Counting

Digit Counting UVA - 1225 題目傳送門 題目大意&#xff1a;輸入一個數字T&#xff0c;代表有T組測試數據&#xff0c;下面每行有一個整數n&#xff0c;求將1到n的數字連成一串后每個數字出現的個數。 AC代碼&#xff1a; #include <cstdio> #include <iostream&…

Chess Queen【數學】

Chess Queen UVA - 11538 題目傳送門 題目大意&#xff1a;輸入兩個整數n,m&#xff0c;在n行m列的棋盤中放入白黑兩個棋子&#xff0c;棋子在同一行、同一列或同一對角線上能相互進攻&#xff0c;問有多少種擺放方案。 AC代碼&#xff1a; #include <cstdio> #incl…

Java開發中保證接口的冪等性問題

目錄 1、解決方案 2、使用token保證接口冪等性的例子 3、在實際項目中&#xff0c;如何有效地使用token法來保證接口的冪等性&#xff1f; 4、3示例中如何獲取請求中的 token 5、如果token驗證失敗&#xff0c;如何處理 6、在上述示例代碼中加上token過期后重置的功能 7…

typedef 的四個用途和兩大陷阱

>>>>>用途一&#xff1a;定義一種類型的別名&#xff0c;而不只是簡單的宏替換。可以用作同時聲明指針型的多個對象。比如&#xff1a;char* pa, pb; // 這多數不符合我們的意圖&#xff0c;它只聲明了一個指向字符變量的指針&#xff0c; // 和一個字符變量&am…

Triangle Counting【數學】

Triangle Counting UVA - 11401 題目傳送門 題目大意&#xff1a;輸入一個整數n&#xff0c;求在1到n中選取三條邊能夠組成多少種三角形。 AC代碼&#xff1a; #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #in…

Cheerleaders【容斥】

Cheerleaders UVA - 11806 題目傳送門 題目大意&#xff1a;給你三個整數n,m,k&#xff0c;代表有一個n行m列的場地&#xff0c;共有k個人&#xff0c;需保證在最外圍的一圈的每行每列都必須要有一個人&#xff0c;若這個人在對角上&#xff0c;則可以當做他所在的行列都已經…

Exploring Pyramids【動態規劃——區間DP】

Exploring Pyramids UVALive - 3516 題目傳送門 題目大意&#xff1a;給你一個字符串&#xff0c;其代表的是機器人來回走過的路徑&#xff0c;機器人總是先走左邊再走右邊&#xff0c;問有多少種情況。 解決方法&#xff1a;設輸入序列為S&#xff0c;d(i,j)為子序列Si,Si…