欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jQuery學(xué)習(xí)筆記之Ajax用法實(shí)例詳解

 更新時(shí)間:2015年12月01日 11:39:47   作者:Jeff Wong  
這篇文章主要介紹了jQuery學(xué)習(xí)筆記之Ajax用法,結(jié)合實(shí)例形式較為詳細(xì)的分析總結(jié)了jQuery中ajax的相關(guān)使用技巧,包括ajax請(qǐng)求、載入、處理、傳遞等,需要的朋友可以參考下

本文實(shí)例講述了jQuery學(xué)習(xí)筆記之Ajax用法。分享給大家供大家參考,具體如下:

一、Ajax請(qǐng)求

1、jQuery.ajax(options)

通過(guò) HTTP 請(qǐng)求加載遠(yuǎn)程數(shù)據(jù)。jQuery 底層 AJAX 實(shí)現(xiàn)。簡(jiǎn)單易用的高層實(shí)現(xiàn)見(jiàn) .get,.post 等。

.ajax()返回其創(chuàng)建的XMLHttpRequest對(duì)象。大多數(shù)情況下你無(wú)需直接操作該對(duì)象,但特殊情況下可用于手動(dòng)終止請(qǐng)求。.ajax() 只有一個(gè)參數(shù):參數(shù) key/value 對(duì)象,包含各配置及回調(diào)函數(shù)信息。詳細(xì)參數(shù)選項(xiàng)見(jiàn)下。

注意: 如果你指定了 dataType 選項(xiàng),請(qǐng)確保服務(wù)器返回正確的 MIME 信息,(如 xml 返回 "text/xml")。錯(cuò)誤的 MIME 類型可能導(dǎo)致不可預(yù)知的錯(cuò)誤。

注意:如果dataType設(shè)置為"script",那么在遠(yuǎn)程請(qǐng)求時(shí)(不在同一個(gè)域下),所有POST請(qǐng)求都將轉(zhuǎn)為GET請(qǐng)求。(因?yàn)閷⑹褂肈OM的script標(biāo)簽來(lái)加載)

jQuery 1.2 中,您可以跨域加載 JSON 數(shù)據(jù),使用時(shí)需將數(shù)據(jù)類型設(shè)置為 JSONP。使用 JSONP 形式調(diào)用函數(shù)時(shí),如 "myurl?callback=?" jQuery 將自動(dòng)替換 ? 為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。數(shù)據(jù)類型設(shè)置為 "jsonp" 時(shí),jQuery 將自動(dòng)調(diào)用回調(diào)函數(shù)。

返回值 XMLHttpRequest

參數(shù)

options (可選) : AJAX 請(qǐng)求設(shè)置。所有選項(xiàng)都是可選的。
選項(xiàng)

(1)、async (Boolean) : (默認(rèn): true)
默認(rèn)設(shè)置下,所有請(qǐng)求均為異步請(qǐng)求。如果需要發(fā)送同步請(qǐng)求,請(qǐng)將此選項(xiàng)設(shè)置為 false。注意,同步請(qǐng)求將鎖住瀏覽器,用戶其它操作必須等待請(qǐng)求完成才可以執(zhí)行。

(2)beforeSend (Function) : 發(fā)送請(qǐng)求前可修改 XMLHttpRequest 對(duì)象的函數(shù),如添加自定義 HTTP 頭。
XMLHttpRequest 對(duì)象是唯一的參數(shù)。這是一個(gè) Ajax 事件。如果返回false可以取消本次ajax請(qǐng)求。

function (XMLHttpRequest) {
  this; // 調(diào)用本次AJAX請(qǐng)求時(shí)傳遞的options參數(shù)
}

(3)、cache (Boolean) : (默認(rèn): true,dataType為script時(shí)默認(rèn)為false)
jQuery 1.2 新功能,設(shè)置為 false 將不會(huì)從瀏覽器緩存中加載請(qǐng)求信息。

(4)、complete (Function) : 請(qǐng)求完成后回調(diào)函數(shù) (請(qǐng)求成功或失敗時(shí)均調(diào)用)。
參數(shù): XMLHttpRequest 對(duì)象和一個(gè)描述成功請(qǐng)求類型的字符串。 這是一個(gè) Ajax 事件

function (XMLHttpRequest, textStatus) {
  this; // 調(diào)用本次AJAX請(qǐng)求時(shí)傳遞的options參數(shù)
} 

(5)、contentType (String) : (默認(rèn): "application/x-www-form-urlencoded") 發(fā)送信息至服務(wù)器時(shí)內(nèi)容編碼類型。默認(rèn)值適合大多數(shù)應(yīng)用場(chǎng)合。

(6)、data (Object,String) : 發(fā)送到服務(wù)器的數(shù)據(jù)。將自動(dòng)轉(zhuǎn)換為請(qǐng)求字符串格式。GET 請(qǐng)求中將附加在URL 后。查看processData選項(xiàng)說(shuō)明以禁止此自動(dòng)轉(zhuǎn)換。
必須為 Key/Value 格式。如果為數(shù)組,jQuery 將自動(dòng)為不同值對(duì)應(yīng)同一個(gè)名稱。如 {foo:["bar1", "bar2"]} 轉(zhuǎn)換為 '&foo=bar1&foo=bar2'。

(7)、dataFilter (Function) :給Ajax返回的原始數(shù)據(jù)的進(jìn)行預(yù)處理的函數(shù)。提供data和type兩個(gè)參數(shù):data是Ajax返回的原始數(shù)據(jù),type是調(diào)用jQuery.ajax時(shí)提供的dataType參數(shù)。函數(shù)返回的值將由jQuery進(jìn)一步處理。

function (data, type) {
  // 對(duì)Ajax返回的原始數(shù)據(jù)進(jìn)行預(yù)處理
  return data // 返回處理后的數(shù)據(jù)
} 

(8)、dataType (String) : (默認(rèn)值:智能判斷xml或者h(yuǎn)tml)
預(yù)期服務(wù)器返回的數(shù)據(jù)類型。如果不指定,jQuery 將自動(dòng)根據(jù) HTTP 包 MIME 信息返回responseXML 或 responseText,并作為回調(diào)函數(shù)參數(shù)傳遞,可用值:

"xml": 返回 XML 文檔,可用 jQuery 處理。
"html": 返回純文本 HTML 信息;包含的script標(biāo)簽會(huì)在插入dom時(shí)執(zhí)行。
"script": 返回純文本 JavaScript 代碼。不會(huì)自動(dòng)緩存結(jié)果。除非設(shè)置了"cache"參數(shù)。注意:在遠(yuǎn)程請(qǐng)求時(shí)(不在同一個(gè)域下),所有POST請(qǐng)求都將轉(zhuǎn)為GET請(qǐng)求。(因?yàn)閷⑹褂肈OM的script標(biāo)簽來(lái)加載)
"json": 返回 JSON 數(shù)據(jù) 。
"jsonp": JSONP 格式。使用 JSONP 形式調(diào)用函數(shù)時(shí),如 "myurl?callback=?" jQuery 將自動(dòng)替換 ? 為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。
"text": 返回純文本字符串

(9)、error (Function) : (默認(rèn): 自動(dòng)判斷 (xml 或 html)) 請(qǐng)求失敗時(shí)調(diào)用時(shí)間。參數(shù)有以下三個(gè):XMLHttpRequest 對(duì)象、錯(cuò)誤信息、(可選)捕獲的錯(cuò)誤對(duì)象。如果發(fā)生了錯(cuò)誤,錯(cuò)誤信息(第二個(gè)參數(shù))除了得到null之外,還可能是"timeout", "error", "notmodified" 和 "parsererror"。Ajax 事件。

function (XMLHttpRequest, textStatus, errorThrown) {
  // 通常 textStatus 和 errorThrown 之中
  // 只有一個(gè)會(huì)包含信息
  this; // 調(diào)用本次AJAX請(qǐng)求時(shí)傳遞的options參數(shù)
}

(10)、global (Boolean) : (默認(rèn): true) 是否觸發(fā)全局 AJAX 事件。設(shè)置為 false 將不會(huì)觸發(fā)全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的 Ajax 事件。

(11)、ifModified (Boolean) : (默認(rèn): false) 僅在服務(wù)器數(shù)據(jù)改變時(shí)獲取新數(shù)據(jù)。使用 HTTP 包 Last-Modified 頭信息判斷。

(12)、jsonp (String) : 在一個(gè)jsonp請(qǐng)求中重寫回調(diào)函數(shù)的名字。這個(gè)值用來(lái)替代在"callback=?"這種GET或POST請(qǐng)求中URL參數(shù)里的"callback"部分,比如{jsonp:'onJsonPLoad'}會(huì)導(dǎo)致將"onJsonPLoad=?"傳給服務(wù)器。

(13)、password (String) : 用于響應(yīng)HTTP訪問(wèn)認(rèn)證請(qǐng)求的密碼

(14)、processData (Boolean) : (默認(rèn): true) 默認(rèn)情況下,發(fā)送的數(shù)據(jù)將被轉(zhuǎn)換為對(duì)象(技術(shù)上講并非字符串) 以配合默認(rèn)內(nèi)容類型 "application/x-www-form-urlencoded"。如果要發(fā)送 DOM 樹(shù)信息或其它不希望轉(zhuǎn)換的信息,請(qǐng)?jiān)O(shè)置為 false。

(15)、scriptCharset (String) : 只有當(dāng)請(qǐng)求時(shí)dataType為"jsonp"或"script",并且type是"GET"才會(huì)用于強(qiáng)制修改charset。通常在本地和遠(yuǎn)程的內(nèi)容編碼不同時(shí)使用。

(16)、success (Function) : 請(qǐng)求成功后的回調(diào)函數(shù)。參數(shù):由服務(wù)器返回,并根據(jù)dataType參數(shù)進(jìn)行處理后的數(shù)據(jù);描述狀態(tài)的字符串。 Ajax 事件。

function (data, textStatus) {
  // data 可能是 xmlDoc, jsonObj, html, text, 等等
  this; // 調(diào)用本次AJAX請(qǐng)求時(shí)傳遞的options參數(shù)
}

(17)、timeout (Number) : 設(shè)置請(qǐng)求超時(shí)時(shí)間(毫秒)。此設(shè)置將覆蓋全局設(shè)置。

(18)、type (String) : (默認(rèn): "GET") 請(qǐng)求方式 ("POST" 或 "GET"), 默認(rèn)為 "GET"。注意:其它 HTTP 請(qǐng)求方法,如 PUT 和 DELETE 也可以使用,但僅部分瀏覽器支持。

(19)、url (String) : (默認(rèn): 當(dāng)前頁(yè)地址) 發(fā)送請(qǐng)求的地址。

(20)、username (String) : 用于響應(yīng)HTTP訪問(wèn)認(rèn)證請(qǐng)求的用戶名

(21)、xhr (Function) : 需要返回一個(gè)XMLHttpRequest 對(duì)象。默認(rèn)在IE下是ActiveXObject 而其他情況下是XMLHttpRequest 。用于重寫或者提供一個(gè)增強(qiáng)的XMLHttpRequest 對(duì)象。這個(gè)參數(shù)在jQuery 1.3以前不可用。

ps:上述紅色標(biāo)出的部分是大多數(shù)ajax調(diào)用常用的參數(shù)設(shè)置,利用這幾個(gè)參數(shù)就可以成功實(shí)現(xiàn)ajax調(diào)用了.

示例

//jQTest.js
function jqAjaxTest() {
  var jqRequestUrl = "AjaxHandler.ashx";
  //1、 加載并執(zhí)行一個(gè) JS 文件
  $.ajax({
    type: "GET",
    url: "js/jqLoadJs.js",
    dataType: "script"
  });
  //2、裝載一個(gè) HTML 網(wǎng)頁(yè)最新版本 
  $.ajax({
    url: "test.htm",
    cache: false, //沒(méi)有緩存的說(shuō)
    success: function(html) {
      //alert(html);
      $("#spanGetHtml").css("display", "block");
      $("#spanGetHtml").css("color", "red");
      $("#spanGetHtml").append(html);
    }
  });
  //3、獲取并解析一個(gè)xml文件(從服務(wù)端獲取xml)
  $.ajax({
    type: 'GET',
    dataType: 'xml', //這里可以不寫,但千萬(wàn)別寫text或者h(yuǎn)tml
    url: jqRequestUrl + "?action=jquerGetXmlRequest",
    success: function(xml) {
      //正確解析服務(wù)端的xml文件
      $(xml).find("profile").each(function(i) {
        var name = $(this).children("userName").text(); //取對(duì)象文本
        var location = $(this).children("location").text();
        alert("Xml at SERVER is gotten by CLIENT:" + name + " is living in " + location);
      });
    },
    error: function(xml) {
      alert('An error happend while loading XML document ');
    }
  });
  //4、發(fā)送 XML 數(shù)據(jù)至服務(wù)器(客戶端發(fā)送xml到服務(wù)端)
  var xmlDocument = "<profile>" +
  " <userName>jeff wong</userName>" +
  " <location>beijing</location>" +
  "</profile>";
  $.ajax({
    url: jqRequestUrl + "?action=jqueryXmlRequest",
    processData: false, //設(shè)置 processData 選項(xiàng)為 false,防止自動(dòng)轉(zhuǎn)換數(shù)據(jù)格式。
    //type: "xml",
    cache: false,
    type: "xml",
    data: xmlDocument,
    success: function(html) {
      alert(html); //彈出提示
      $("#spanResult").css("display", "block");
      $("#spanResult").css("color", "red");
      $("#spanResult").html(html); //給當(dāng)前dom的一個(gè)span元素賦值
    },
    error: function(oXmlHttpReq, textStatus, errorThrown) {
      alert("jquery ajax xml request failed");
      $("#spanResult").css("display", "block");
      $("#spanResult").css("color", "red");
      $("#spanResult").html("jquery ajax xml request failed"); //提示出錯(cuò)
    }
  });
  //5、同步加載數(shù)據(jù)。發(fā)送請(qǐng)求時(shí)鎖住瀏覽器。需要鎖定用戶交互操作時(shí)使用同步方式。
  var html = $.ajax({
    //沒(méi)有type 默認(rèn)為GET方式
    url: jqRequestUrl + "?action=syncRequest",
    async: false
  }).responseText;
  alert(html);
  //6、顯式get測(cè)試
  $.ajax({
    type: "GET",
    url: jqRequestUrl + "?action=jquery&userName=" + $("#txtUserName").val(),
    cache: false,
    success: function(html) {
      // alert(html); //彈出提示
      $("#spanResult").css("display", "block");
      $("#spanResult").css("color", "red");
      $("#spanResult").html(html); //給當(dāng)前dom的一個(gè)span元素賦值
    },
    error: function(oXmlHttpReq, textStatus, errorThrown) {
      alert("jquery ajax request failed");
      $("#spanResult").css("display", "block");
      $("#spanResult").css("color", "red");
      $("#spanResult").html("jquery ajax request failed"); //提示出錯(cuò)
    }
  });
  //7、顯式POST測(cè)試 
  $.ajax({
    type: "POST",
    url: jqRequestUrl,
    data: "action=jquerySaveData&userName=jeffwong&location=beijing",
    success: function(html) {
      alert(html);
    }
  });
}

幾個(gè)相關(guān)文件:

a、處理ajax請(qǐng)求的服務(wù)端文件:AjaxHandler.ashx,對(duì)應(yīng)的cs文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Xml;
namespace MyJqTest
{
  public class AjaxHandler : IHttpHandler, IRequiresSessionState
  {
    /// <summary>
    /// 可復(fù)用
    /// </summary>
    public bool IsReusable
    {
      get
      {
        return true;
      }
    }
    public void ProcessRequest(HttpContext context)
    {
      AjaxOperations(context);
    }
    private void AjaxOperations(HttpContext context)
    {
      string action = context.Request["action"];
      if (!string.IsNullOrEmpty(action))
      {
        switch (action)
        {
          default:
            break;
          case "jquery":
            ProcessJQueryRequest(context);
            break;
          case "jquerySaveData":
            ProcessJQuerySaveData(context);
            break;
          case "syncRequest":
            ProcessJQuerySyncRequest(context);
            break;
          case "jqueryXmlRequest":
            ProcessJQueryXMLRequest(context);
            break;
          case "jquerGetXmlRequest":
            ProcessJQueryGetXMLRequest(context);
            break;
        }
      }
    }
    private void ProcessJQueryRequest(HttpContext context)
    {
      context.Response.ClearContent();
      context.Response.ContentType = "text/plain"; //設(shè)置輸出流類型
      context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //沒(méi)有緩存
      string result = context.Request["userName"].Trim();
      context.Response.Write("You have entered a name:" + result);
    }
    private void ProcessJQuerySaveData(HttpContext context)
    {
      context.Response.ClearContent();
      context.Response.ContentType = "text/plain"; //設(shè)置輸出流類型
      context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //沒(méi)有緩存
      string name = context.Request["userName"].Trim();
      string location = context.Request["location"].Trim();
      context.Response.Write("Your data have been saved:your name is " + name + ",living in " + location);
    }
    private void ProcessJQuerySyncRequest(HttpContext context)
    {
      context.Response.ClearContent();
      context.Response.ContentType = "text/plain"; //設(shè)置輸出流類型
      context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //沒(méi)有緩存
      context.Response.Write("Your sync ajax request has been processed.");
    }
    /// <summary>
    /// 簡(jiǎn)單的xml請(qǐng)求處理(服務(wù)端從客戶端獲取xml)
    /// </summary>
    /// <param name="context"></param>
    private void ProcessJQueryXMLRequest(HttpContext context)
    {
      context.Response.ClearContent();
      context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //沒(méi)有緩存
      XmlDocument doc = new XmlDocument();
      try
      {
        doc.Load(context.Request.InputStream); //獲取xml (這里需要注意接受xml數(shù)據(jù)的方法)
        context.Response.ContentType = "text/plain"; //設(shè)置輸出流類型
        string name = doc.SelectSingleNode("profile/userName").InnerText;
        string location = doc.SelectSingleNode("profile/location").InnerText;
        context.Response.Write("Your XML data have received,and your name is " + name + ",living in " + location);
      }
      catch (Exception ex)
      {
        context.Response.Write("Get xml data failed.");
        throw ex;
      }
    }
    /// <summary>
    /// 返回簡(jiǎn)單的xml(服務(wù)端返回客戶端xml)
    /// </summary>
    /// <param name="context"></param>
    private void ProcessJQueryGetXMLRequest(HttpContext context)
    {
      context.Response.ClearContent();
      context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //沒(méi)有緩存
      XmlDocument doc = new XmlDocument();
      try
      {
        doc.Load(context.Server.MapPath("/jeffWong.xml"));
        context.Response.ContentType = "text/xml;charset=UTF-8"; //設(shè)置輸出流類型
        context.Response.Write(doc.OuterXml);
      }
      catch (Exception ex)
      {
        context.Response.Write("Load xml data failed.");
        throw ex;
      }
    }
  }
}

b、aspx,html和xml文件(直接放在根目錄下)

aspx文件是ajax請(qǐng)求頁(yè)面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JQuery.aspx.cs" Inherits="MyJqTest.JQuery" %>
<!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 src="js/jquery-1.3.1.js" type="text/javascript"></script>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    &nbsp;&nbsp;<span style="display: none" id="spanGetHtml"></span>
    <br />
    Please input a name:<input id="txtUserName" type="text" /><input id="btnJQAjax" type="button"
      value="jQuery ajax 請(qǐng)求" onclick="jqAjaxTest()" />
    &nbsp;&nbsp;<span style="display: none" id="spanResult"></span>
  </div>
  <script src="js/jQTest.js" type="text/javascript"></script>
  </form>
</body>
</html>

html很簡(jiǎn)單:

test.htm:

<!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></title>
</head>
<body>
<div>it is a simple ajax test</div>
</body>
</html>

 

xml文件:

jeffWong.xml:

<?xml version="1.0" encoding="utf-8" ?>
<profile>
 <userName>jeff wong</userName>
 <location>beijing</location>
</profile>

c、js文件(放在根目錄js文件夾下)

jqLoadJs.js  測(cè)試ajax加載js文件用

復(fù)制代碼 代碼如下:
alert("this is a ajax request script test");

2、load(url,[data],[callback])

載入遠(yuǎn)程 HTML 文件代碼并插入至 DOM 中。

默認(rèn)使用 GET 方式 - 傳遞附加參數(shù)時(shí)自動(dòng)轉(zhuǎn)換為 POST 方式。jQuery 1.2 中,可以指定選擇符,來(lái)篩選載入的 HTML 文檔,DOM 中將僅插入篩選出的 HTML 代碼。語(yǔ)法形如 "url #some > selector"。請(qǐng)查看示例。

返回值 jQuery

參數(shù)

url (String) : 待裝入 HTML 網(wǎng)頁(yè)網(wǎng)址。
data (Map,String) : (可選) 發(fā)送至服務(wù)器的 key/value 數(shù)據(jù)。在jQuery 1.3中也可以接受一個(gè)字符串了。
callback (Callback) : (可選) 載入成功時(shí)回調(diào)函數(shù)。

示例:

function jqAjaxTest() {
  $("#spanResult").load("test.htm");
  $("#spanResult").css("display", "block");
  $("#spanResult").css("color", "red");
}

3、jQuery.get(url,[data],[callback],[type])

通過(guò)遠(yuǎn)程 HTTP GET 請(qǐng)求載入信息。

這是一個(gè)簡(jiǎn)單的 GET 請(qǐng)求功能以取代復(fù)雜 .ajax。請(qǐng)求成功時(shí)可調(diào)用回調(diào)函數(shù)。如果需要在出錯(cuò)時(shí)執(zhí)行函數(shù),請(qǐng)使用.ajax。

返回值  XMLHttpRequest

參數(shù)

url (String) : 待載入頁(yè)面的URL地址
data (Map) : (可選) 待發(fā)送 Key/value 參數(shù)。
callback (Function) : (可選) 載入成功時(shí)回調(diào)函數(shù)。
type (String) : (可選) 返回內(nèi)容格式,xml, html, script, json, text, _default。

示例

function jqAjaxTest() {
  var jqRequestUrl = "AjaxHandler.ashx";
  $.get(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqGetNormalCallBack, 'text'); //返回?cái)?shù)據(jù)類型
}
function jqGetNormalCallBack(oData) {
  $("#spanResult").html(oData);//這里直接json數(shù)據(jù)綁定了,下一個(gè)jquery方法會(huì)有處理
  $("#spanResult").css("display", "block");
  $("#spanResult").css("color", "red");
}

AjaxHandler.ashx代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Xml;
namespace MyJQTest
{
  public class AjaxHandler : IHttpHandler, IRequiresSessionState
  {
    /// <summary>
    /// 可復(fù)用
    /// </summary>
    public bool IsReusable
    {
      get
      {
        return true;
      }
    }
    public void ProcessRequest(HttpContext context)
    {
      AjaxOperations(context);
    }
    private void AjaxOperations(HttpContext context)
    {
      string action = context.Request["action"];
      if (!string.IsNullOrEmpty(action))
      {
        switch (action)
        {
          default:
            break;
          case "jquery":
            ProcessJQueryRequest(context);
            break;
        }
      }
    }
    private void ProcessJQueryRequest(HttpContext context)
    {
      context.Response.ClearContent();
      context.Response.ContentType = "text/plain"; //設(shè)置輸出流類型
       context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //沒(méi)有緩存
       string userName = context.Request["userName"].Trim();
      string location = context.Request["location"].Trim();
      string jsonObject = "{\"userName\":\"" + userName + "\",\"location\":\"" + location + "\"}";
      context.Response.Write(jsonObject);
    }
  }
}

ps:本例中,我們返回的是一段json類型的數(shù)據(jù),在客戶端沒(méi)有對(duì)json類型數(shù)據(jù)進(jìn)行處理,在下一個(gè)方法(jQuery.getJSON)中會(huì)改進(jìn)處理的。

4、jQuery.getJSON(url,[data],[callback])

通過(guò) HTTP GET 請(qǐng)求載入 JSON 數(shù)據(jù)。

在 jQuery 1.2 中,您可以通過(guò)使用JSONP 形式的回調(diào)函數(shù)來(lái)加載其他網(wǎng)域的JSON數(shù)據(jù),如 "myurl?callback=?"。jQuery 將自動(dòng)替換 ? 為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。
注意:此行以后的代碼將在這個(gè)回調(diào)函數(shù)執(zhí)行前執(zhí)行。

返回值  XMLHttpRequest

參數(shù)

url (String) : 發(fā)送請(qǐng)求地址。
data (Map) : (可選) 待發(fā)送 Key/value 參數(shù)。
callback (Function) : (可選) 載入成功時(shí)回調(diào)函數(shù)。

示例

function jqAjaxTest() {
  var jqRequestUrl = "AjaxHandler.ashx";
  //getJSON方法調(diào)用
  $.getJSON(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqGetJsonCallBack); //返回json數(shù)據(jù)類型
}
//對(duì)json數(shù)據(jù)進(jìn)行處理 (oData是json類型的數(shù)據(jù))
function jqGetJsonCallBack(oData) {
  var oJsonStr = "";
  //取json中的數(shù)據(jù),并呈現(xiàn)
  oJsonStr += "userName:" + oData.userName + "&nbsp;&nbsp;location:" + oData.location + "<br/>";
  //在div中顯示所有數(shù)據(jù)
  $("#divResult").html(oJsonStr);
  $("#divResult").css("display", "block");
  $("#divResult").css("color", "red");
}

5、jQuery.getScript(url,[callback])

通過(guò) HTTP GET 請(qǐng)求載入并執(zhí)行一個(gè) JavaScript 文件。

jQuery 1.2 版本之前,getScript 只能調(diào)用同域 JS 文件。 1.2中,您可以跨域調(diào)用 JavaScript 文件。注意:Safari 2 或更早的版本不能在全局作用域中同步執(zhí)行腳本。如果通過(guò) getScript 加入腳本,請(qǐng)加入延時(shí)函數(shù)。

返回值  XMLHttpRequest

參數(shù)

url (String) : 待載入 JS 文件地址。
callback (Function) : (可選) 成功載入后回調(diào)函數(shù)。

示例

function jqAjaxTest() {
  var jsUrl = "js/jqLoadJs.js";
  //getScript方法調(diào)用
  $.getScript(jsUrl, jqGetJsCallBack);
}
//oData返回的是整個(gè)js路徑下js文件內(nèi)容
function jqGetJsCallBack(oData) {
  alert(oData);
}

6、jQuery.post(url,[data],[callback],[type])

通過(guò)遠(yuǎn)程 HTTP POST 請(qǐng)求載入信息。

這是一個(gè)簡(jiǎn)單的 POST 請(qǐng)求功能以取代復(fù)雜 .ajax。請(qǐng)求成功時(shí)可調(diào)用回調(diào)函數(shù)。如果需要在出錯(cuò)時(shí)執(zhí)行函數(shù),請(qǐng)使用.ajax。

返回值  XMLHttpRequest

參數(shù)

url (String) : 發(fā)送請(qǐng)求地址。
data (Map) : (可選) 待發(fā)送 Key/value 參數(shù)。
callback (Function) : (可選) 發(fā)送成功時(shí)回調(diào)函數(shù)。
type (String) : (可選) 返回內(nèi)容格式,xml, html, script, json, text, _default。

示例

function jqAjaxTest() {
  var jqRequestUrl = "AjaxHandler.ashx";
  $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text"); //返回text數(shù)據(jù)類型
}
function jqPostCallBack(oData) {
  //在div中顯示所有數(shù)據(jù)
  $("#divResult").html(oData);
  $("#divResult").css("display", "block");
  $("#divResult").css("color", "red");
}

二、Ajax事件

1、ajaxComplete(callback)

AJAX 請(qǐng)求完成時(shí)執(zhí)行函數(shù)。Ajax 事件。

XMLHttpRequest 對(duì)象和設(shè)置作為參數(shù)傳遞給回調(diào)函數(shù)。

返回值  jQuery

參數(shù)

callback (Function) : 待執(zhí)行函數(shù)

示例

function jqAjaxTest() {
  var jqRequestUrl = "AjaxHandler.ashx";
  $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text"); //返回text數(shù)據(jù)類型
  //AJAX 請(qǐng)求完成時(shí)執(zhí)行函數(shù)
  $("#divResult").ajaxComplete(function(event, request, settings) {
    $(this).append("<br/>請(qǐng)求完成.");
  });
}
function jqPostCallBack(oData) {
  //在div中顯示所有數(shù)據(jù)
  $("#divResult").html(oData);
  $("#divResult").css("display", "block");
  $("#divResult").css("color", "red");
}

2、ajaxError(callback)

AJAX 請(qǐng)求發(fā)生錯(cuò)誤時(shí)執(zhí)行函數(shù)。Ajax 事件。

XMLHttpRequest 對(duì)象和設(shè)置作為參數(shù)傳遞給回調(diào)函數(shù)。捕捉到的錯(cuò)誤可作為最后一個(gè)參數(shù)傳遞。

返回值  jQuery

參數(shù)

callback (Function) : 待執(zhí)行函數(shù)

function (event, XMLHttpRequest, ajaxOptions, thrownError) {
   // thrownError 只有當(dāng)異常發(fā)生時(shí)才會(huì)被傳遞
   this; // 監(jiān)聽(tīng)的 dom 元素
}

示例

function jqAjaxTest() {
  var jqRequestUrl = "AjaxHandlers.ashx"; //正確的文件名 AjaxHandler.ashx 這里故意寫錯(cuò) 引發(fā)ajaxError事件
  $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");
}
//AJAX 請(qǐng)求發(fā)生錯(cuò)誤時(shí)執(zhí)行函數(shù) (這一段放在jqAjaxTest函數(shù)內(nèi)也可以)
$("#divResult").ajaxError(function(event, request, settings) {
  $("#divResult").css("display", "block");
  $("#divResult").css("color", "red");
  $(this).append("<br/>出錯(cuò)頁(yè)面:" + settings.url);
});
function jqPostCallBack(oData) {
  //在div中顯示所有數(shù)據(jù)
  $("#divResult").html(oData);
  $("#divResult").css("display", "block");
  $("#divResult").css("color", "red");
}

3、ajaxSend(callback)

AJAX 請(qǐng)求發(fā)送前執(zhí)行函數(shù)。Ajax 事件。

XMLHttpRequest 對(duì)象和設(shè)置作為參數(shù)傳遞給回調(diào)函數(shù)。

返回值  jQuery

參數(shù)

callback (Function) : 待執(zhí)行函數(shù)

示例

function jqAjaxTest() {
  var jqRequestUrl = "AjaxHandler.ashx"; 
  $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");
}
//AJAX 請(qǐng)求發(fā)送前執(zhí)行函數(shù)
$("#divResult").ajaxSend(function(evt, request, settings) {
  $("#divResult").css("display", "block");
  $("#divResult").css("color", "red");
  $(this).append("<br/>開(kāi)始請(qǐng)求: " + settings.url + "<br/>");
});
function jqPostCallBack(oData) {
  //在div中顯示所有數(shù)據(jù)
  $("#divResult").append(oData);
  $("#divResult").css("display", "block");
  $("#divResult").css("color", "red");
}

4、ajaxStart(callback)

AJAX 請(qǐng)求開(kāi)始時(shí)執(zhí)行函數(shù)。Ajax 事件。

返回值  jQuery

參數(shù)

callback (Function) : 待執(zhí)行函數(shù)

示例

function jqAjaxTest() {
  var jqRequestUrl = "AjaxHandler.ashx"; 
  $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");
}
//AJAX 請(qǐng)求開(kāi)始時(shí)執(zhí)行函數(shù)
$("#divResult").ajaxStart(function() {
  $("#divResult").css("display", "block");
  $("#divResult").css("color", "red");
  $(this).append("<br/>請(qǐng)求開(kāi)始了<br/>");
});
function jqPostCallBack(oData) {
  //在div中顯示所有數(shù)據(jù)
  $("#divResult").append(oData);
  $("#divResult").css("display", "block");
  $("#divResult").css("color", "red");
}

5、ajaxStop(callback)

AJAX 請(qǐng)求結(jié)束時(shí)執(zhí)行函數(shù)。Ajax 事件。

返回值  jQuery

參數(shù)

callback (Function) : 待執(zhí)行函數(shù)

示例

function jqAjaxTest() {
  var jqRequestUrl = "AjaxHandler.ashx"; 
  $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");
}
//AJAX 請(qǐng)求開(kāi)始時(shí)執(zhí)行函數(shù)
$("#divResult").ajaxStop(function() {
  $(this).append("<br/>請(qǐng)求已經(jīng)結(jié)束了<br/>");
});
function jqPostCallBack(oData) {
  //在div中顯示所有數(shù)據(jù)
  $("#divResult").append(oData);
  $("#divResult").css("display", "block");
  $("#divResult").css("color", "red");
}

6、ajaxSuccess(callback)

AJAX 請(qǐng)求成功時(shí)執(zhí)行函數(shù)。Ajax 事件。

XMLHttpRequest 對(duì)象和設(shè)置作為參數(shù)傳遞給回調(diào)函數(shù)。

返回值  jQuery

參數(shù)

callback (Function) : 待執(zhí)行函數(shù)

示例

function jqAjaxTest() {
  var jqRequestUrl = "AjaxHandler.ashx"; 
  $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");
}
//AJAX 請(qǐng)求成功時(shí)執(zhí)行函數(shù)
$("#divResult").ajaxSuccess(function(evt, request, settings) {
  $(this).append("<br/>請(qǐng)求成功<br/>");
  $(this).append(settings.url);
});
function jqPostCallBack(oData) {
  //在div中顯示所有數(shù)據(jù)
  $("#divResult").append(oData);
  $("#divResult").css("display", "block");
  $("#divResult").css("color", "red");
}

三、其他

1、jQuery.ajaxSetup(options)

設(shè)置全局 AJAX 默認(rèn)選項(xiàng)。

參數(shù)見(jiàn) '$.ajax' 說(shuō)明。

返回值  jQuery

參數(shù)

options (可選) : 選項(xiàng)設(shè)置。所有設(shè)置項(xiàng)均為可選設(shè)置。

示例

//設(shè)置 AJAX 請(qǐng)求默認(rèn)地址為 "AjaxHandler.ashx",禁止觸發(fā)全局 AJAX 事件,用 POST 代替默認(rèn) GET 方法。其后的 AJAX 請(qǐng)求不再設(shè)置任何選項(xiàng)參數(shù)。 
$.ajaxSetup({
  url: "AjaxHandler.ashx",
  global: false,
  type: "POST"
});

2、serialize()

序列化表單內(nèi)容為字符串。

返回值  jQuery

參數(shù)

序列化表單內(nèi)容為字符串,用于 Ajax 請(qǐng)求。

示例

$(document).ready(function() {
  var oSerializedStr = $("form").serialize(); //序列化表單內(nèi)容為字符串
  $("#results").append("<tt>" + oSerializedStr + "</tt>");
});

文檔片段:

<body>
  <p id="results">
    <b>Results: </b>
  </p>
  <form>
  <select name="single">
    <option>Single</option>
    <option>Single2</option>
  </select>
  <select name="multiple" multiple="multiple">
    <option selected="selected">Multiple</option>
    <option>Multiple2</option>
    <option selected="selected">Multiple3</option>
  </select><br />
  <input type="checkbox" name="check" value="check1" />
  check1
  <input type="checkbox" name="check" value="check2" checked="checked" />
  check2
  <input type="radio" name="radio" value="radio1" checked="checked" />
  radio1
  <input type="radio" name="radio" value="radio2" />
  radio2
  </form>
  <script src="js/jQTest.js" type="text/javascript"></script>
</body>

3、serializeArray()

序列化表單內(nèi)容,返回 JSON 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)。

返回值  jQuery

參數(shù)

序列化表單內(nèi)容為JSON ,用于 Ajax 請(qǐng)求。

示例

$(document).ready(function() {
  var fields = $("select, :radio").serializeArray(); //序列化表單select和raido為json
  jQuery.each(fields, function(i, field) {
    $("#results").append(field.value + " ");
  }); 
});

好了,關(guān)于jQuery的ajax就介紹到這里,筆者的每個(gè)示例都測(cè)試通過(guò)了。jQuery封裝好的ajax函數(shù)用起來(lái)確實(shí)方便,有了這樣的“神兵利器”,以后寫ajax的應(yīng)用程序肯定會(huì)更加得心應(yīng)手。

希望本文所述對(duì)大家jQuery程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論