JQuery的ajax使用教程, ajax提交时显示加载中

技术教程 · 2014-11-03

科普: what's ajax

AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

why's JQuery ajax

传统的Javascript 上使用 ajax, 要输入一大堆东西, 但是JQuery库把ajax进行封装,使用起来方便且出错的概率比JS低很多.

此文旨在从零开始教你使用jquery的ajax,结合的是我目前在银行开发的小型培训系统, 我使用的开发语言是jsp,其他的asp, php等也是同理的. 如有说得不对的地方, 望请见谅且指教!

首先, 在网页上, 先引用JQuery库:

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

至于使用哪个版本的JQuery, 看个人喜好吧, 不过从2.0版本开始, JQuery就不支持IE8以下的, 不过目前一般都会使用IE9以上了,使用其他浏览器的(Chrome等)就不用考虑版本了,直接用最新版吧, 不过如果你跟我处在死板的银行等单位的话, 乖乖地用2.0以下的版本吧!

导入以后, 就可以使用写ajax了, 在引用库的语句下面,输入:

<script type="text/javascript">
    function 函数名() {
    $.ajax({
    cache : false,
    type : "POST",//post形式发送,也可以设置成get
    url : "/web/admin/manage/index.jsp", //把表单数据发送到index.jsp
    data : $('#formID').serialize(), //要发送的是form的id为"formID"的表单中的数据
    async : false,//false为异步更新, true为同步更新
    error : function(request) {
    alert("发送请求失败!");//发送失败时,弹出警告框
    },
    success : function(data) {
    $("#divID").html(data); //将返回的结果显示到id为"divID"的地方中
    }
    });
}
<script>

至此, 以表单形式提交的ajax就能实现了.

如果发送的数据不是表单, 可以改成:

<script type="text/javascript">
    function 函数名() {
    $.ajax({
    cache : false,
    url : "/web/admin/manage/index.jsp", //把表单数据发送到index.jsp
    dataType: "json",//json形式发送
    data : ["key1":"value1","key2":"value2",...], //要发送数据,前者是参数名,后者是参数值,以逗号隔开
    async : false,//false为异步更新, true为同步更新
    error : function(request) {
    alert("发送请求失败!");//发送失败时,弹出警告框
    },
    success : function(data) {
    $("#divID").html(data); //将返回的结果显示到id为"divID"的地方中
    }
    });
}
<script>

引申, 很多时候, 服务器的加载是需要时间的, 当进行ajax提交数据时, 在等待中, 我们希望能显示加载中等字样, 我的思路是:
网页中先设置一个加载中的容器,样式设置成不显示, 例子如下:

<div id="loading" style="position:fixed;left:45%;top:40%;display:none">
    <img alt="loading" src="./img/loading.gif">
    <h3>加载中...</h3>
</div>

然后, ajax 改成如下:

<script type="text/javascript">
    function 函数名() {
    $.ajax({
    befordSend:function(){
        $('#loading').show();
    },
    cache : false,
    type : "POST",//post形式发送,也可以设置成get
    url : "/web/admin/manage/index.jsp", //把表单数据发送到index.jsp
    data : $('#formID').serialize(), //要发送的是form的id为"formID"的表单中的数据
    async : false,//false为异步更新, true为同步更新
    error : function(request) {
    alert("发送请求失败!");//发送失败时,弹出警告框
    },
    success : function(data) {
    $("#divID").html(data); //将返回的结果显示到id为"divID"的地方中
    },
    complete:function(){
        $('#loading').hide();
    }
    });
}
<script>

提醒, 要正常显示加载中, async 必须设置成 false ! 我当时就是设置成true, 一直没成功, 找原因还找了很久! 哭死在路上...

end...祝愉快~

jquery ajax
Theme Jasmine by Kent Liao