原生Ajax寫法

来源:http://www.cnblogs.com/janfesh/archive/2017/11/06/7795322.html
-Advertisement-
Play Games

//創建XMLHttp對象 function CreateXmlHttp() { //非IE瀏覽器創建XmlHttpRequest對象 if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else { return null; } ... ...




//創建XMLHttp對象
function CreateXmlHttp() {
    //非IE瀏覽器創建XmlHttpRequest對象
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else {
        return null;
    }
    //IE瀏覽器創建XmlHttpRequest對象
    if (window.ActiveXObject) {
        try {
            return new ActiveXObject("Microsoft.XMLHTTP"); //較老的IE版本創建
        } catch (e) {
            try {
                return new ActiveXObject("Msxml2.XMLHTTP"); //較新的IE版本創建
            } catch (ex) {
                return null;
            }
        }
    }
}
//調用Ajax
function Send() {
    var xmlHttp = CreateXmlHttp();
    if (!xmlHttp) {
        alert("創建xmlHttp對象異常");
        return false;
    }
    var url = "CommonHandler.ashx?t=" + Math.random();
    /*
    method:發送請求所使用的方法(GET或POST);與POST相比,GET更簡單也更快,並且在大部分情況下都能用;然而,在以下情況中,請使用POST請求:
    •無法使用緩存文件(更新伺服器上的文件或資料庫)
    •向伺服器發送大量數據(POST 沒有數據量限制)
    •發送包含未知字元的用戶輸入時,POST 比 GET 更穩定也更可靠 
     url:規定伺服器端腳本的 URL(該文件可以是任何類型的文件,比如 .txt 和 .xml,或者伺服器腳本文件,比如.aspx,.ashx 和 .php (在傳迴響應之前,能夠在伺服器上執行任務));
    async:規定應當對請求進行非同步(true)或同步(false)處理;true是在等待伺服器響應時執行其他腳本,當響應就緒後對響應進行處理;false是等待伺服器響應再執行。
    */
    xmlHttp.open("post", url, true);
    //setRequestHeader():POST傳數據時,用來添加 HTTP 頭
    // 添加http頭,發送信息至伺服器時內容編碼類型
    xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlHttp.send();
    //onreadystatechange 每次狀態改變所觸發事件的事件處理程式。
    xmlHttp.onreadystatechange = function () {
        //readyState 對象狀態值
        /*0 (未初始化) 對象已建立,但是尚未初始化(尚未調用 open 方法)
        1 (初始化) 對象已建立,尚未調用 send 方法
        2 (發送數據) send 方法已調用,但是當前的狀態及 http 頭未知
        3 (數據傳送中) 已接收部分數據,因為響應及 http 頭不全,這時通過 responseBody 和 responseText
        獲取部分數據會出現錯誤,
        4 (完成) 數據接收完畢,此時可以通過通過 responseXml 和 responseText 獲取完整的回應數據*/
        if (xmlHttp.readyState == 4) {
            document.getElementById("msg").innerHTML = "數據正在載入中...";
            // status值說明  
            // 200:成功  
            // 404:沒有發現文件、查詢或URl  
            // 500:伺服器產生內部錯誤                  
            if (xmlHttp.status == 200) {
                // 這裡可以對返回的內容做處理  
                // 一般會返回JSON或XML數據格式  
                document.getElementById("msg").innerHTML = xmlHttp.responseText;
            }
        }
    }
}

//頁面html
<body>
    <input type="button" id="btn" onclick="Send()" value="Send" />
    <br />
    <div id="msg">
    </div>
</body>

// 一般處理程式CommonHandler.ashx
<%@ WebHandler Language="C#" Class="CommonHandler" %>

using System;
using System.Web;

public class CommonHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        Random rd = new Random();
        context.Response.Write(rd.Next(0, 10000));
    }
    
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

 


 

 

 

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 工廠模式(Factory Pattern) 1,Shape介面的定義 2,Circle實現Shape介面 3,Rectangle實現Shape介面 4,Square實現Shape介面 5,工廠方法類ShapeFactory 6,工廠的使用Demo ...
  • 簡介(Introduction) <! 出這邊文章的目的,及如何更好地閱讀這篇文章 之前學習 "Java8實戰" 時,遇到一個很好的策略模式示例。便想著藉著這個示例結合反饋式的方法來,學習策略設計模式,也以便後面反覆琢磨學習。 首先我們通過練習,逐步寫出符合相應需求的代碼,再根據需求進行改進、比較、 ...
  • 1、使用position中的absolute要與relative配套使用,如果不使用relative時預設absolute會用整個視窗作為參照物;如果relative放在absolute的父級標簽上,則absolute會以父級塊標簽作為參照物調整位置,absolute要使用top、left、righ ...
  • function Stack() { this.dataStore = []; //存儲棧元素 } Stack.prototype = { constructor: Stack, push: function(element) { this.dataStore.push(element) }, po... ...
  • 共同點:split與join函數通常都是對字元或字元串的操作; 兩者的區別:(1)split()用於分割字元串,返回一個數組,例如 var string=“hello world?name=xiaobai”; var splitString = string.split("?"); console. ...
  • 用另一種視角去理解JavaScript的原型鏈,明白__proto__跟prototype的本質。 ...
  • 一、首先安裝插件 1、安裝Package Control,這是為了安裝其他插件做基礎,它可以方便我們下載其他插件 (1)、按Ctrl+`調出console(註:避免熱鍵衝突) (2)、粘貼以下代碼到命令行並回車: import urllib.request,os; pf = 'Package Con ...
  • JQuery對Ajax操作進行了封裝, \$.ajax() 方法屬於最底層的方法,第2層是 load() 、 \$.get() 、 \$.post() 方法,第3層是 \$.getScript() 和 \$.getJSON() 方法。 \$.get() 方法和 \$.post() 方法是jQuery ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...