• jQuery学习笔记:Ajax(二)


    3、jQuery.get(url,[data],[callback],[type])
    通过远程 HTTP GET 请求载入信息。
    这是一个简单的 GET 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。
    返回值 XMLHttpRequest
    参数
    url (String) : 待载入页面的URL地址
    data (Map) : (可选) 待发送 Key/value 参数。
    callback (Function) : (可选) 载入成功时回调函数。
    type (String) : (可选) 返回内容格式,xml, html, script, json, text, _default。
    示例
    Code
    function jqAjaxTest() {
         var jqRequestUrl = "AjaxHandler.ashx";
         $.get(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqGetNormalCallBack, 'text'); //返回数据类型
    }

    function jqGetNormalCallBack(oData) {
         $("#spanResult").html(oData);//这里直接json数据绑定了,下一个jquery方法会有处理
         $("#spanResult").css("display", "block");
         $("#spanResult").css("color", "red");
    }

    AjaxHandler.ashx代码:

    Code
    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>
             /// 可复用
             /// </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"; //设置输出流类型
                   context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //没有缓存
                   string userName = context.Request["userName"].Trim();
                 string location = context.Request["location"].Trim();
                 string jsonObject = "{\"userName\":\"" + userName + "\",\"location\":\"" + location + "\"}";
                 context.Response.Write(jsonObject);
             }
         }
    }

    ps:本例中,我们返回的是一段json类型的数据,在客户端没有对json类型数据进行处理,在下一个方法(jQuery.getJSON)中会改进处理的。
    4、jQuery.getJSON(url,[data],[callback])
    通过 HTTP GET 请求载入 JSON 数据。
    在 jQuery 1.2 中,您可以通过使用JSONP 形式的回调函数来加载其他网域的JSON数据,如 "myurl?callback=?"。jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。 
    注意:此行以后的代码将在这个回调函数执行前执行。
    返回值 XMLHttpRequest
    参数
    url (String) : 发送请求地址。
    data (Map) : (可选) 待发送 Key/value 参数。
    callback (Function) : (可选) 载入成功时回调函数。
    示例

    Code
    function jqAjaxTest() {
         var jqRequestUrl = "AjaxHandler.ashx";
         //getJSON方法调用
         $.getJSON(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqGetJsonCallBack); //返回json数据类型
    }

    //对json数据进行处理 (oData是json类型的数据)
    function jqGetJsonCallBack(oData) {
         var oJsonStr = "";
         //取json中的数据,并呈现
         oJsonStr += "userName:" + oData.userName + "&nbsp;&nbsp;location:" + oData.location + "<br/>";

         //在div中显示所有数据
         $("#divResult").html(oJsonStr);
         $("#divResult").css("display", "block");
         $("#divResult").css("color", "red");
    }

    5、jQuery.getScript(url,[callback])
    通过 HTTP GET 请求载入并执行一个 JavaScript 文件。
    jQuery 1.2 版本之前,getScript 只能调用同域 JS 文件。 1.2中,您可以跨域调用 JavaScript 文件。注意:Safari 2 或更早的版本不能在全局作用域中同步执行脚本。如果通过 getScript 加入脚本,请加入延时函数。
    返回值 XMLHttpRequest
    参数
    url (String) : 待载入 JS 文件地址。
    callback (Function) : (可选) 成功载入后回调函数。
    示例

    Code
    function jqAjaxTest() {
         var jsUrl = "js/jqLoadJs.js";
         //getScript方法调用
         $.getScript(jsUrl, jqGetJsCallBack);
    }

    //oData返回的是整个js路径下js文件内容
    function jqGetJsCallBack(oData) {
         alert(oData);
    }

    6、jQuery.post(url,[data],[callback],[type])
    通过远程 HTTP POST 请求载入信息。
    这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。
    返回值 XMLHttpRequest
    参数
    url (String) : 发送请求地址。
    data (Map) : (可选) 待发送 Key/value 参数。
    callback (Function) : (可选) 发送成功时回调函数。
    type (String) : (可选) 返回内容格式,xml, html, script, json, text, _default。
    示例

    Code
    function jqAjaxTest() {
         var jqRequestUrl = "AjaxHandler.ashx";
         $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text"); //返回text数据类型
    }

    function jqPostCallBack(oData) {
         //在div中显示所有数据
         $("#divResult").html(oData);
         $("#divResult").css("display", "block");
         $("#divResult").css("color", "red");
    }

    二、Ajax事件
    1、ajaxComplete(callback)
    AJAX 请求完成时执行函数。Ajax 事件。
    XMLHttpRequest 对象和设置作为参数传递给回调函数。
    返回值 jQuery
    参数
    callback (Function) : 待执行函数
    示例

    Code
    function jqAjaxTest() {
         var jqRequestUrl = "AjaxHandler.ashx";
         $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text"); //返回text数据类型

         //AJAX 请求完成时执行函数
         $("#divResult").ajaxComplete(function(event, request, settings) {
             $(this).append("<br/>请求完成.");
         });
    }

    function jqPostCallBack(oData) {
         //在div中显示所有数据
         $("#divResult").html(oData);
         $("#divResult").css("display", "block");
         $("#divResult").css("color", "red");
    }

    2、ajaxError(callback)
    AJAX 请求发生错误时执行函数。Ajax 事件。
    XMLHttpRequest 对象和设置作为参数传递给回调函数。捕捉到的错误可作为最后一个参数传递。
    返回值 jQuery
    参数
    callback (Function) : 待执行函数
    function (event, XMLHttpRequest, ajaxOptions, thrownError) {
          // thrownError 只有当异常发生时才会被传递
          this; // 监听的 dom 元素
    }

    示例

    Code
    function jqAjaxTest() {
         var jqRequestUrl = "AjaxHandlers.ashx"; //正确的文件名   AjaxHandler.ashx   这里故意写错   引发ajaxError事件
         $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");

    }

    //AJAX 请求发生错误时执行函数 (这一段放在jqAjaxTest函数内也可以)
    $("#divResult").ajaxError(function(event, request, settings) {
         $("#divResult").css("display", "block");
         $("#divResult").css("color", "red");
         $(this).append("<br/>出错页面:" + settings.url);
    });

    function jqPostCallBack(oData) {
         //在div中显示所有数据
         $("#divResult").html(oData);
         $("#divResult").css("display", "block");
         $("#divResult").css("color", "red");
    }

    3、ajaxSend(callback)
    AJAX 请求发送前执行函数。Ajax 事件。
    XMLHttpRequest 对象和设置作为参数传递给回调函数。
    返回值 jQuery
    参数
    callback (Function) : 待执行函数
    示例

    Code
    function jqAjaxTest() {
         var jqRequestUrl = "AjaxHandler.ashx"; 
         $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");

    }

    //AJAX 请求发送前执行函数
    $("#divResult").ajaxSend(function(evt, request, settings) {
         $("#divResult").css("display", "block");
         $("#divResult").css("color", "red");
         $(this).append("<br/>开始请求: " + settings.url + "<br/>");
    });

    function jqPostCallBack(oData) {
         //在div中显示所有数据
         $("#divResult").append(oData);
         $("#divResult").css("display", "block");
         $("#divResult").css("color", "red");
    }

    4、ajaxStart(callback)
    AJAX 请求开始时执行函数。Ajax 事件。
    返回值 jQuery
    参数
    callback (Function) : 待执行函数
    示例

    Code
    function jqAjaxTest() {
         var jqRequestUrl = "AjaxHandler.ashx"; 
         $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");

    }

    //AJAX 请求开始时执行函数
    $("#divResult").ajaxStart(function() {
         $("#divResult").css("display", "block");
         $("#divResult").css("color", "red");
         $(this).append("<br/>请求开始了<br/>");
    });

    function jqPostCallBack(oData) {
         //在div中显示所有数据
         $("#divResult").append(oData);
         $("#divResult").css("display", "block");
         $("#divResult").css("color", "red");
    }

    5、ajaxStop(callback)
    AJAX 请求结束时执行函数。Ajax 事件。
    返回值 jQuery
    参数
    callback (Function) : 待执行函数
    示例

    Code
    function jqAjaxTest() {
         var jqRequestUrl = "AjaxHandler.ashx"; 
         $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");

    }

    //AJAX 请求开始时执行函数
    $("#divResult").ajaxStop(function() {
         $(this).append("<br/>请求已经结束了<br/>");
    });

    function jqPostCallBack(oData) {
         //在div中显示所有数据
         $("#divResult").append(oData);
         $("#divResult").css("display", "block");
         $("#divResult").css("color", "red");
    }

    6、ajaxSuccess(callback)
    AJAX 请求成功时执行函数。Ajax 事件。
    XMLHttpRequest 对象和设置作为参数传递给回调函数。
    返回值 jQuery
    参数
    callback (Function) : 待执行函数
    示例

    Code
    function jqAjaxTest() {
         var jqRequestUrl = "AjaxHandler.ashx"; 
         $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");

    }

    //AJAX 请求成功时执行函数
    $("#divResult").ajaxSuccess(function(evt, request, settings) {
         $(this).append("<br/>请求成功<br/>");
         $(this).append(settings.url);
    });

    function jqPostCallBack(oData) {
         //在div中显示所有数据
         $("#divResult").append(oData);
         $("#divResult").css("display", "block");
         $("#divResult").css("color", "red");
    }

    三、其他
    1、jQuery.ajaxSetup(options)
    设置全局 AJAX 默认选项。
    参数见 '$.ajax' 说明。
    返回值 jQuery
    参数
    options (可选) : 选项设置。所有设置项均为可选设置。
    示例

    //设置 AJAX 请求默认地址为 "AjaxHandler.ashx",禁止触发全局 AJAX 事件,用 POST 代替默认 GET 方法。其后的 AJAX 请求不再设置任何选项参数。 
    $.ajaxSetup({
         url: "AjaxHandler.ashx",
         global: false,
         type: "POST"
    });

    2、serialize()
    序列化表单内容为字符串。
    返回值 jQuery
    参数
    序列化表单内容为字符串,用于 Ajax 请求。
    示例

    $(document).ready(function() {
         var oSerializedStr = $("form").serialize(); //序列化表单内容为字符串
         $("#results").append("<tt>" + oSerializedStr + "</tt>");
    });

    文档片段:

    Code
    <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()
    序列化表单内容,返回 JSON 数据结构数据。
    返回值 jQuery
    参数
    序列化表单内容为JSON ,用于 Ajax 请求。
    示例

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

    好了,关于jQuery的ajax就介绍到这里,笔者的每个示例都测试通过了。jQuery封装好的ajax函数用起来确实方便,有了这样的“神兵利器”,以后写ajax的应用程序肯定会更加得心应手。

  • 相关阅读:
    JVM系列【2】Class文件结构
    JVM系列【5】JVM常用指令
    JVM系列【4】内存模型
    JVM系列【3】Class文件加载过程
    新编html网页设计从入门到精通 (龙马工作室) pdf扫描版​
    HTML5移动开发即学即用(双色) 王志刚 pdf扫描版​
    HTML5和CSS3实例教程 中文版 高清PDF扫描版
    HTML5+CSS3网站设计教程 (张晓景,胡克) [iso]
    HTML5+CSS3+jQuery Mobile轻松构造APP与移动网站 (陈婉凌) 中文pdf扫描版
    HTML5 Canvas游戏开发实战 PDF扫描版
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2000913.html
Copyright © 2020-2023  润新知