經過XMLHttpRequest和jQuery實現ajax的幾種方式

AJAX你們已經都知道了,是爲了實現異步通信,提升用戶體驗度,而將不少舊知識(XML,DOM,JavaScript,HTML,Jquery,Css……)從新融合的一個新的知識框架。而,XMLHttpRequest對象則是其中的重重之中,本篇文章主要給你們介紹經過XMLHttpRequest和jQuery實現ajax的幾種方式javascript

HTML代碼:html

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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 runat="server">
  <title></title>
  <script type="text/javascript" src="Scripts/jquery-1.7.1.js"></script>
  <script type="text/javascript" src="Scripts/jwy.js"></script>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <input type="text" name="textbox" id="text1" />
    <input type="button" name="button" id="Button1" value="顯示時間" onclick="btnclick()" />
  </div>
  </form>
</body>
</html>

  

建立一個「通常處理程序」來處理前臺請求,返回系統當前時間:java

Handler.ashxjquery

<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.Linq;
using System.Collections.Generic;
using System.Text;
public class Handler : IHttpHandler {
  public void ProcessRequest (HttpContext context) {
    context.Response.ContentType = "text/plain";
    context.Response.Write(ShowTime());
  }
  public bool IsReusable {
    get {
      return false;
    }
  }
  public static string ShowTime()
  {
    return DateTime.Now.ToString();
  }
}

  

js代碼:web

function btnclick() {
  var httprequest = null;
  // 初始化XMLHttpRequest對象
  if (window.XMLHttpRequest) {
    // Firefox等現代瀏覽器中的XMLHttpRequest對象建立
    httprequest = new XMLHttpRequest();
  }
  else if (window.ActiveXObject) {
    // IE中的XMLHttpRequest對象建立
    httprequest = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (!httprequest) {
    alert("建立httprequest對象出現異常!");
  }
  httprequest.open("POST", "Handler.ashx", true);
  //httprequest向handler發送post請求,最後參數是設定是否爲異步請求,true爲異步,false爲同步
  httprequest.onreadystatechange = function () {
    //指定onreadystatechange事件句柄對應的函數
    if (httprequest.readyState == 4) {
      //4表明服務器返回完成
      if (httprequest.status == 200) {
        //200表明成功了
        document.getElementById("text1").value = httprequest.responseText;
        //responsetext表示服務器返回的文本,還有一種方式是responseXML是爲了獲取服務器返回的xml
      }
      else {
        alert("AJAX服務器返回錯誤!");
      }
    }
  }
  httprequest.send();
  //在這裏才真正的向服務器端發送請求
}

  

咱們用jquery來前臺js代碼會變得十分簡潔:ajax

基於jquery編寫的js代碼json

注意:HTML代碼要把button的onclick事件去掉,由於咱們直接在js用了事件綁定。瀏覽器

$(document).ready(function () {
  //button1綁定事件
  $("#Button1").bind("click", function () {
    $.ajax({
      url: "Handler.ashx",
      type: "POST",
      success: function (data) {
        //$("#text1").val(data);
        document.getElementById("text1").value = data;
      }
    });
  });
});

  

不得不說jquery「簡約而不簡單」……服務器

jquery中的$.ajax集合了get、post方法,默認的是get。框架

若是直接用POST的話,代碼更簡單

$(document).ready(function () {
  //button1綁定事件
  $("#Button1").bind("click", function () {
    $.post("Handler.ashx", function (data) {
  document.getElementById("text1").value = data;
    }); 
 });
});

  

示例二:

1、XMLHttpRequest實現獲取數據

不使用jQuery實現頁面不刷新獲取內容的方式,咱們這裏採用XMLHttpRequest原生代碼實現;

js代碼以下:

//1.獲取a節點,併爲其添加Oncilck響應函數
document.getElementsByTagName("a")[0].onclick = function(){
   //三、建立一個XMLHttpRequest();
  var request = new XMLHttpRequest();
  //四、準備發送請求的數據url
  var url = this.href;
  var method = "GET";
  //五、調用XMLHttpRequest對象的open方法
  request.open(method,url);
  //六、調用XMLHttpRequest對象的send方法
  request.send(null);
  //七、爲XMLHttpRequest對象添加onreadystatechange 響應函數
  request.onreadystatechange = function(){
    //八、判斷響應是否完成:XMLHttpRequest 對象的readystate的屬性值爲4的時候
    if(request.readyState == 4){
       //九、在判斷響應是否可用:XMLHttpRequest 對象status 屬性值爲200
      if(request.status == 200){
           //十、響應結果
           alert(request.responseText);
      }  
    } 
  }   
      //二、取消a節點的額默認行爲
      return false;   
}

  


插入HTML代碼:

<a href = "hello.txt">點擊獲取文本內容</a>

  


 2、jQuery實現ajax獲取信息

這個例子是動態的從後臺獲取數據來改變下拉按鈕的內容;

js代碼以下:

function bindCarteam0(){
     //經過URL請求數據
     var URL = <select:link page="/xiaoshouwl.do?method=getCarteamList"/>;
      $.ajax({
        url:URL,
        type:'GET',
        dataType: "json",
        success:function(html){
          var str="<option value='-1'>所有</option>";
          for(var i=0;i<html.length;i++){
            str+="<option value='"+html[i].id+"'>"+html[i].name+"</option>";
          }
          $("#carteam_code").empty().html(str);
        }
      });
   }

  


HTML代碼以下:

<select:select property="carteam_code" styleId="carteam_code" style="width:150px">
                     <select:option value="-1">所有</select:option>
                </select:select>
相關文章
相關標籤/搜索