zoukankan      html  css  js  c++  java
  • jQuery入门(6):Ajax

    Ajax

    Ajax请求
    jQuery.ajax(options)

    说明:通过 HTTP 请求加载远程数据。

    $.ajax()返回其创建的XMLHttpRequest对象。大多数情况下你无需直接操作该对象,但特殊情况下可用于手动终止请求。

    注意: 如果你指定了dataType选项,请确保服务器返回正确的MIME信息,(如xml返回 "text/xml")。错误的 MIME 类型可能导致不可预知的错误。

    $.ajax()只有一个参数:参数 key/value 对象,包含各配置及回调函数信息。

    1.2 中可以跨域加载JSON数据,使用时需将数据类型设置为JSONP。使用JSON 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换?为正确的函数名,以执行回调函数。数据类型设置为 "jsonp" 时,jQuery 将自动调用回调函数。

    选项

    async(Boolean):(默认: true)所有请求均为异步请求。如要发送同步请求,设置为false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

    beforeSend(Function):发送请求前可修改XMLHttpRequest对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。

    cache(Boolean):(默认: true) 设置为fals 将不会从浏览器缓存中加载请求信息。

    complete(Function): 请求完成后回调函数(请求成功或失败时均调用)。参数: XMLHttpRequest 对象,成功信息字符串。

    contentType(String): (默认: "application/x-www-form-urlencoded") 发送信息至服务器时内容编码类型。默认值适合大多数应用场合。

    data(Object,String): 发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。

    dataType(String) : 预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作为回调函数参数传递,可用值:

    "xml": 返回 XML 文档,可用 jQuery 处理。

    "html": 返回纯文本 HTML 信息;包含 script 元素。

    "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。

    "json": 返回 JSON 数据 。

    "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

    error(Function) : (默认:自动判断 (xml 或 html)) 请求失败时调用时间。参数:XMLHttpRequest 对象,错误信息,(可能)捕获的错误对象。

    global (Boolean) : (默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的Ajax事件。

    ifModified (Boolean) : (默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。

    processData (Boolean) : (默认: true) 默认情况下,发送的数据将被转换为对象(技术上讲并非字符串) 以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。

    success (Function) : 请求成功后回调函数。参数:服务器返回数据,数据格式。

    timeout (Number) : 设置请求超时时间(毫秒)。此设置将覆盖全局设置。

    type (String) : (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。

    url (String) : (默认: 当前页地址) 发送请求的地址。

    加载并执行一个 JS 文件。

    $.ajax({

     type: "GET",

     url: "test.js",

     dataType: "script"

    });

    保存数据到服务器,成功时显示信息。

    $.ajax({

       type: "POST",

       url: "some.php",

       data: "name=John&location=Boston",

       success: function(msg){

         alert( "Data Saved: " + msg );

       }

    });

    装入一个 HTML 网页最新版本。

    $.ajax({

     url: "test.html",

     cache: false,

     success: function(html){

        $("#results").append(html);

     }

    });

    同步加载数据。发送请求时锁住浏览器。需要锁定用户交互操作时使用同步方式。

     var html = $.ajax({

     url: "some.php",

     async: false

     }).responseText;

    发送 XML 数据至服务器。设置 processData 选项为 false,防止自动转换数据格式。

     var xmlDocument = [create xml document];

     $.ajax({

       url: "page.php",

       processData: false,

       data: xmlDocument,

       success: handleResponse

     });

    load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中,默认使用 GET 方式 - 传递附加参数时自动转换为 POST 方式。

    url (String) : 请求的HTML页的URL地址。

    data (Map) : (可选参数) 发送至服务器的 key/value 数据。如果有[data]参数,就会自动转换为POST方式。

    callback (Callback) : (可选参数) 请求完成时(不需要是success的)的回调函数。

    示例代码:

    $(".ajax.load").load("http://www.cnblogs.com/QLeelulu/archive/2008/03/30/1130270.html",

             function (responseText, textStatus, XMLHttpRequest){

             this;//在这里this指向的是当前的DOM对象,即$(".ajax.load")[0]

             //alert(responseText);//请求返回的内容

             //alert(textStatus);//请求状态:success,error

             //alert(XMLHttpRequest);//XMLHttpRequest对象

    });

    注:不知道为什么URL写绝对路径在FF下会出错。下面的get()和post()示例使用的是绝对路径,所以在FF下你将会出错并不会看到返回结果。

     

    <b>jQuery Links:</b><ul id="links"></ul>

    代码:$("#links").load("/Main_Page #p-Getting-Started li");

    代码:加载 feeds.html 文件内容。

    $("#feeds").load("feeds.html");

     

    代码:以 POST 形式发送附加参数并在成功时显示信息。

     $("#feeds").load("feeds.php", {limit: 25}, function(){

       alert("The last 25 entries in the feed have been loaded");

     });

    jQuery.get(url,[data],[callback]):通过远程 HTTP GET 请求载入信息

    示例代码:

    $.get("./Ajax.aspx", {Action:"get",Name:"lulu"}, function (data, textStatus){

             //返回的 data 可以是 xmlDoc, jsonObj, html, text, 等等.

             this; // 在这里this指向的是Ajax请求的选项配置信息

             alert(data);

             //alert(textStatus);//请求状态:success,error等等。当然这里捕捉不到error,因为error的时候根本不会运行该回调函数

             //alert(this);

    });

    请求 test.php 网页,忽略返回值。 $.get("test.php");

    $.get("test.php", { name: "John", time: "2pm" } );

    显示 test.php 返回值(HTML 或 XML,取决于返回值)。

    $.get("test.php", function(data){

     alert("Data Loaded: " + data);

    });

    显示 test.cgi 返回值(HTML 或 XML,取决于返回值),添加一组请求参数。

    $.get("test.cgi", { name: "John", time: "2pm" },

     function(data){

        alert("Data Loaded: " + data);

     });

    jQuery.getJSON(url,data,callback):通过 HTTP GET 请求载入 JSON 数据

    从 Flickr JSONP API 载入 4 张最新的关于猫的图片。

    <div id="images"></div>

    代码:

    $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",

    function(data){

     $.each(data.items, function(i,item){

        $("<img/>").attr("src",

    item.media.m).appendTo("#images");

        if ( i == 3 ) return false;

     });

    });

    从 test.js 载入 JSON 数据并显示 JSON 数据中一个 name 字段数据。

    $.getJSON("test.js", function(json){

     alert("JSON Data: " + json.users[3].name);

    });

    从 test.js 载入 JSON 数据,附加参数,显示 JSON 数据中一个 name 字段数据。

    $.getJSON("test.js", { name: "John", time: "2pm" }, function(json){

     alert("JSON Data: " + json.users[3].name);

    });

    jQuery.getScript(url,callback):通过 HTTP GET 请求载入并执行一个 JavaScript 文件。

    载入 jQuery 官方颜色动画插件 成功后绑定颜色变化动画。

    <button id="go">» Run</button>

    <div class="block"></div>

    代码:

    jQuery.getScript("http://dev.jquery.com/view/trunk/plugins/color/jquery.color.js",

    function(){

     $("#go").click(function(){

        $(".block").animate( { backgroundColor: 'pink' }, 1000)

          .animate( { backgroundColor: 'blue' }, 1000);

     });

    });

    加载并执行 test.js。 $.getScript("test.js");

    加载并执行 test.js ,成功后显示信息。

    $.getScript("test.js", function(){

     alert("Script loaded and executed.");

    });

    jQuery.post(url,data,callback,type):通过远程 HTTP POST 请求载入信息

    url (String) : 发送请求的URL地址.

    data (Map) : (可选) 要发送给服务器的数据,以 Key/value 的键值对形式表示。

    callback (Function) : (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)。

    type (String) : (可选)官方的说明是:Type of data to be sent。其实应该为客户端请求的类型(JSON,XML,等等)

    示例代码:

    Ajax.aspx:

    Response.ContentType = "application/json";

    Response.Write("{result: '" + Request["Name"] + ",你好!(这消息来自服务器)'}");

    代码:

    $.post("Ajax.aspx", { Action: "post", Name: "lulu" },

             function (data, textStatus){

                  // data 可以是 xmlDoc, jsonObj, html, text, 等等.

                  //this; // 这个Ajax请求的选项配置信息,请参考jQuery.get()说到的this

                  alert(data.result);

             }, "json");

    Ajax事件
    ajaxComplete(callback):
    AJAX 请求完成时执行函数。

    $("#msg").ajaxComplete(function(request, settings){

       $(this).append("<li>Request Complete.</li>");

     });

    ajaxError(callback):AJAX 请求发生错误时执行函数

     $("#msg").ajaxError(function(request, settings){

       $(this).append("<li>Error requesting page " + settings.url +

    "</li>");

     });

    ajaxSend(callback):AJAX 请求发送前执行函数

     $("#msg").ajaxSend(function(evt, request, settings){

       $(this).append("<li>Starting request at " + settings.url +

    "</li>");

     });

    ajaxStart(callback):AJAX 请求开始时执行函数

     $("#loading").ajaxStart(function(){

       $(this).show();

     });

    ajaxStop(callback):AJAX 请求结束时执行函数

     $("#loading").ajaxStop(function(){

       $(this).hide();

     });

    ajaxSuccess(callback):AJAX 请求成功时执行函数

     $("#msg").ajaxSuccess(function(evt, request, settings){

       $(this).append("<li>Successful Request!</li>");

     });

    其它
    jQuery.ajaxSetup(options):
    设置全局 AJAX 默认选项

    $.ajaxSetup({

     url: "/xmlhttp/",

     global: false,

     type: "POST"

    });

    $.ajax({ data: myData });

    serialize():序列表表格内容为字符串。

    $("#results").append( "<tt>" + $("form").serialize() + "</tt>" );

    serializeArray():序列化表格元素 (类似 '.serialize()' 方法) 返回 JSON 数据结构数据

    var fields = $("select, :radio").serializeArray();

    jQuery.each( fields, function(i, field){

     $("#results").append(field.value + " ");

    });

  • 相关阅读:
    Python Turtle
    Python 键盘记录
    Django框架学习
    MongoDB数据库安装与连接
    Python 进程间通信
    Powershell脚本执行权限
    Python 端口,IP扫描
    Exchange超级实用命令行
    Exchange管理界面
    window7 配置node.js 和coffeescript环境
  • 原文地址:https://www.cnblogs.com/astar/p/1336417.html
Copyright © 2011-2022 走看看