JQuery的一些注意事项(2)- AJAX 学习笔记

1. 动态加载外部文件:

    /*AJAX 动态加载外部文件*/
    $(document).ready(function () {
        $('#btn1').click(function () {
            $('#log-content').load('data/logs.txt'); //这个txt文件内容如果是中文,需要保存成utf-8编码格式
        })
    })

2. 动态加载外部网页:

    /*AJAX 动态加载外部网页*/
    $(document).ready(function () {
        $('#btn1').click(function () {
            $('#log-content').load('http://localhost:63342/jQuery/data/htmldata.html?_ijt=sgjc9obth398kjjjv314ntgs17');
        })
    })

默认情况下,jQuery的load()函数会使用HTTP的Get函数向服务器发送数据请求,传递参数时,会自动以POST方式提交数据。

3. 加载网页文件内容并传递服务端参数

<label for="parameters"></label>
<select name="parameters" size="5" id="parameters">
    <option value="1" selected="selected">url</option>
    <option value="2">data</option>
    <option value="3">callback</option>
</select>
<br>
<div>
    <input id="btn1" type="button" value="获取外部文件">
    <div id="log-content"></div>
</div>

 

 $(document).ready(function () {
        $('#btn1').click(function () {
            $name = $("#parameters option:selected").val(); //层次选择器在一个“”内以空格区分
            $('#log-content').empty().load('demo.php',{name:$name});
        })
    });

用户从客户端的列表框选择一个参数值,点击事件发生后,将从服务端的PHP文件获取参数的描述

/*要获取的PHP文件*/
<?php
    switch($_POST['name']){
        case 1:
            echo '必需的URL参数规定用户希望加载的URL';
            break;
        case 2:    
            echo '可选参数:data。 规定与请求一同发送的查询字符串键/值对集合。';
            break;
        case 3:    
            echo '可选参数:callback。 load函数完成后所执行的函数名称。';
            break;            
    }
?>

4. 使用 AJAX 无刷新网页删除记录(比如微博)

<div id="container">
    <h3>留言内容</h3>
    <div id="load" align="center"></div>
    <div class="box">
        <div class="text">
            <span>张三</span>
            <br>
            很好用的留言板
            <div class="date">2017-05-21</div>
        </div>
        <!--删除链接,每个链接的id值,指向数据库当前记录的id-->
        <a href="" id="1" class="delete">删除</a>
        <div class="clear"></div>
    </div>
</div>
<script>
   $(function () {
       $('.delete').click(function () {
           var commentContainer = $(this).parent();
           var id = $(this).attr('id');
           var string = 'id=' + id;//构造参数字符串
           $.ajax({
               type:"POST",
               url: "ajax_delete_Server.php",
               data:string,//传递的参数字符串
               cache:false, //不缓存
               success:function () {
                   commentContainer.slideUp('slow',function () {
                       $(this).remove();
                   });
               }
           });
           return false;
       })
   })
</script>

 调用$.ajax(),向 ajax_delete_Server.php 文件发送一个AJAX请求,用来删除留言。

总结:可以看出,$.ajax()和load()方法都可以用来加载服务端数据。

load()方法根据参数来决定是用GET还是POST。没有参数就是GET,带参数就是POST。这个参数可以指定要获取文件的特定内容。

$.ajax()是底层方法,它可以代替load()方法。

5. 验证插件,validator.min.js中,有一个方法,optional(element). 

jQuery.validate的optional(element),用于表单控件的值不为空时才触发验证。
当element为空时this.optional(element)=true,用于在该控件为非必填项目时可以通过验证,及条件可以不填但是不能填错格式。
// 中文字两个字节
jQuery.validator.addMethod("byteRangeLength", function(value, element, param) {
    var length = value.length;
    for(var i = 0; i < value.length; i++){
        if(value.charCodeAt(i) > 127){
            length++;
        }
    }
  return this.optional(element) || ( length >= param[0] && length <= param[1] );   
}, $.validator.format("请确保输入的值在{0}-{1}个字节之间(一个中文字算2个字节)"));

 这个插件的异步验证:使用 ajax 方式进行验证,默认会提交当前验证的值到远程地址,如果需要提交其他的值,可以使用 data 选项。

remote: {
    url: "check-email.php",     //后台处理程序
    type: "post",               //数据发送方式
    dataType: "json",           //接受数据格式   
    data: {                     //要传递的数据
        username: function() {
            return $("#username").val();
        }
    }
}

 6. 页面滚动时加载新的网页内容。

 $(document).ready(function () {
        $('#load_max').val(50);//为隐藏域赋值50,表示一次加载50条记录。
    });
    var loading = false;//全局变量,指定当前是否正在加载服务端内容。
    $(window).scroll(function () {
        //如果当前窗体的高度大于文档的高度
        if ((($(window).scrollTop()+$(window).height())+250)>=$(document).height()){
            if(loading===false){
                loading=true; //设置文档加载状态
                $('#loadingbar').css('display', 'block'); //显示加载提示条
                $.get("xxx.php?start="+$('#load_max').val(), function (loaded) {
                    $('body').append(loaded);
                    //在隐藏区域中设置新的起始值
                    $('#load_max').val(parseInt($('#load_max').val())+50);
                    $('#loadingbar').css('display','none'); //隐藏状态条
                    loading=false; //结束加载的状态
                });
            }
        }
    });

滚动加载内容的核心是关联window的onscroll事件。判断当前滚动条位置,若高于当前文档的高度,则向服务端发送数据请求。

(此外,jQuery有一个lazyload插件,用来延迟加载长页面的图片。在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预加载的处理方式正好是相反的.)

posted @ 2017-06-13 10:42  kiera  阅读(252)  评论(0编辑  收藏  举报