随笔 - 46  文章 - 36 评论 - 43 阅读 - 40357

jQuery Ajax:load()方法

 

主要参考:

《锋利的jQuery》单东林、张晓菲、魏然

www.3cschool.com.cn《jQuery 参考手册 - Ajax》

 

搜集整理:sagahu@163.com

 

定义

 

load() 方法通过 AJAX 请求从服务器加载数据,并把返回的数据放置到指定的元素中。

 

注释:还存在一个名为 load 的 jQuery 事件方法。调用哪个,取决于参数。

 

语法

 

.load(url, data, callback)

 

请使用 selector 来定义要改变的 HTML 元素,使用 url 参数来指定数据的 web 地址。只有当您希望向服务器发送数据时,才需要使用 data 参数。只有当您需要在执行完毕之后触发一个函数时,您才需要使用 callback 参数。

 

参数

说明

url

必需。规定要将请求发送到哪个 URL。

data

可选。规定连同请求发送到服务器的数据。发送至服务器的key/value数据会作为QueryString附加到请求url中。

callback的语法:

function(response, status, xhr)

可选。规定当请求完成时运行的回调函数,无论请求成功或失败。

回调函数参数:

    response - 包含来自请求的结果数据。

    status - 包含请求的状态("success", "notmodified", "error", "timeout" 或 "parsererror" 4种)。

    xhr - 包含 XMLHttpRequest 对象。

返回值

jQuery

 

详细说明

 

load() 方法是jQuery 中最为简单和常用的方法。它几乎与 $.get(url, data, success) 等价,不同的是它不是全局函数,并且它拥有隐式的回调函数。当侦测到成功的响应时(比如,当 status 为 "success" 或 "notmodified" 时),load() 将匹配元素的 HTML 内容设置为返回的数据。这意味着该方法的大多数使用会非常简单:

 

$("#div1").load("ajax/test.html");

 

如果提供回调函数,则会在执行 post-processing 之后执行该函数:

 

$("#div1").load("ajax/test.html", function() {

  alert("Load was performed.");

});

 

上面的两个例子中,如果当前文档不包含 "div1" ID,则不会执行 .load() 方法。

 

注意:在load() 方法中,无论Ajax请求是否成功,只要当请求完成(complete)后,回调(callback)函数就被触发。对应$.ajax()方法中的complete回调函数。

 

详细说明:url参数与加载页面片断

 

注意:在url 参数上,load() 方法与 $.get() 不同,前者允许我们规定要插入的远程文档的某个部分。

 

load() 方法允许加载页面片断,这一点是通过 url 参数的特殊语法实现的。其语法格式为:"url selector",注意url和选择器之间有一个空格。或者说,如果该url参数字符串中包含一个或多个空格,紧接第一个空格的字符串则是决定所加载内容的 jQuery 选择器。

 

我们可以修改上面的例子,这样就可以使用所获得文档的某部分:

 

$("#div1").load("ajax/test.html #container");

 

如果执行该方法,则会取回 ajax/test.html 的内容,不过然后,jQuery 会解析被返回的文档,来查找带有“#container” ID 的元素。该元素,连同其内容,会被插入带有“#div1” ID 的元素中,所取回文档的其余部分会被丢弃。

 

注意:jQuery 使用浏览器的 .innerHTML 属性来解析被取回的文档,并把它插入当前文档。在此过程中,浏览器常会从文档中过滤掉元素,比如 <html>, <title> 或 <head> 元素。结果是,由 load() 取回的元素可能与由浏览器直接取回的文档不完全相同。

 

注释:由于浏览器安全方面的限制,大多数 "Ajax" 请求遵守同源策略;请求无法从不同的域、子域或协议成功地取回数据。

 

详细说明:data参数与传递方式

 

load()方法的传递方式是根据参数data来自动指定。如果没有参数传递,则采用HTTP GET方式传递;反之,则会自动转换为HTTP POST方式。

 

如何使用data参数发送数据的示例一

 

<html>

<head>

<script type="text/javascript" src="/jquery/jquery.js"></script>

<script type="text/javascript">

$(document).ready(function(){

  $("input").keyup(function(){

    txt=$("input").val();

    $("span").load("/jquery/gethint.asp", {suggest:txt});

  });

});

</script>

</head>

<body>

<p>请在下面的输入框中输入名字(a 到 z 的字符):</p>

名字:<input type="text" />

<p>建议:<span></span></p>

<p>注释:我们在 <a href="/ajax/ajax_asp_php.asp" target="_blank">AJAX 教程</a> 中讲解过本例中使用的文件(gethint.asp)。</p>

</body>

</html>

 

如何使用data参数发送数据的示例二

 

// 无参数传递,是GET方式

$("div1").load("test.php", function(){

       //...

});

// 有参数传递,则是POST方式

// 无参数传递,是GET方式

$("div1").load("test.php", {name:"rain", age:"22"}, function(){

       //...

});

 

如何使用回调函数的参数来处理返回的数据的示例

 

<html>

<head>

<script type="text/javascript" src="/jquery/jquery.js"></script>

<script type="text/javascript">

$(document).ready(function(){

  $("button").click(function(){

    $("div").load("/example/xmle/cd_catalog.xml", function(response, status){

      if (status=="success")

      {

      $("div").html("<ol></ol>");

      $(response).find("artist").each(function(){

        var item_text = $(this).text();

        $('<li></li>').html(item_text).appendTo('ol');

        });

      alert("There are "+$(response).find("cd").size()+" CDs")

      }

    });

  });

});

</script>

</head>

<body>

<p>Artists</p>

<div></div>

<button>获得 CD 信息</button>

<p>本例中使用的 XML 文件是 <a href="/example/xmle/cd_catalog.xml" target="_blank">cd_catalog</a></p>

</body>

</html>

 

如何使用回调函数的XMLHttpRequest 参数来处理AJAX 请求中的错误

 

<html>

<head>

<script type="text/javascript" src="/jquery/jquery.js"></script>

<script type="text/javascript">

$(document).ready(function(){

  $("button").click(function(){

    $("div").load("wrongname.xml", function(response, status, xhr){

      if (status=="success")

      {

      $("div").html("<ol></ol>");

      $(response).find("artist").each(function(){

        var item_text = $(this).text();

        $('<li></li>').html(item_text).appendTo('ol');

        });

      }

      else

      {

      $("div").html("An error occured: <br/>" + xhr.status + " " + xhr.statusText)

      }

    });

  });

});

</script>

</head>

<body>

<p>Artists</p>

<div></div>

<button>获得 CD 信息</button>

<p>本例中使用的 XML 文件是 <a href="/example/xmle/cd_catalog.xml" target="_blank">cd_catalog</a></p>

</body>

</html>

 

 

posted on   萨迦狐  阅读(173)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示