Sweety

Practice makes perfect

导航

异步加载之ajax

Posted on 2017-12-16 12:47  蓝空  阅读(154)  评论(0编辑  收藏  举报

1 XMLHttpRequest

XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

var xmlhttp;
if (window.XMLHttpRequest)
{
    //  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
    xmlhttp=new XMLHttpRequest();
}
else
{
    // IE6, IE5 浏览器执行代码
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

2 open&send

方法 参数
open(method,url,async) 规定请求的类型、URL 以及是否异步处理请求。 method:请求的类型;GET 或 POST url:文件在服务器上的位置 async:true(异步)或 false(同步)
send(string) 将请求发送到服务器。 string:仅用于 POST 请求
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();

懒得详细写了。。。详情

下面是laravel项目中的自己胡乱搞的一个动态加载的demo:
对应的效果(下面的新闻)

<script>
    //ajax动态加载
    var page = 0;
    window.onload = function() { //页面加载触发点击加载
        document.getElementById("btn").click();
    };
    $.ajaxSetup({ //laravel csrf验证
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    function add(){

        $.ajax({
            dataType:"html",
            url:'/companynews_adax/'+page+'/'+'{{$company->name}}',
            type:'get',

            success:function(news) {
                var items = JSON.parse(news);
                if(page!=0) {
                    for (var i=0;i<items.length;i++)
                        $("#template").remove();
                }
                $.each(items, function(i, obj) {
                    $("#template").clone(true).insertBefore($("#template"));
                    $("#template").attr('style', 'display:block');

                    $("#newsTitle").text(obj[1]);
                    $("#newshref").attr('href',obj[0]);
                    $("#newsSource").text(obj[3]);
                    $("#newsTime").text(obj[2]);
                });
                page++;
            }
        });
    };

    $("#btn").click(function(event) {
        add();
    });
</script>