Express运用AJAX

2018-06-24  本文已影响0人  playman

AJAX

什么是AJAX

目的是为了减少表单在过程中过多请求相同页面导致的带宽浪费问题,同时可以减少表单填写错误而必须填写整套表单而带来的用户体验下滑。

创建XMLHttpRequest

注册验证小例子

index.js路由配置中

router.get('/checkname', function (req, res, next) {
    var username = req.query.username;
    var str = 'zzq';
    if(str === username){
        res.send(username + '已经存在');
    }else{
        res.send('用户名可以使用');
    }
});

index.ejs页面设置

<input type="text" name="username" value="" id="username">
<span id="info"></span>

js代码

<script type="text/javascript">
    var req = new XMLHttpRequest();
    var input = document.getElementById('username');
    var info = document.getElementById('info');
    input.addEventListener("blur",function (e) {
        //get请求,数据随url传输
        req.open('get','/checkname?username='+input.value);
        req.send();
        req.onreadystatechange = function () {
            if(req.readyState === 4){
                info.innerHTML = req.responseText;
            }
        }
    });
</script>
注意:
var req = new XMLHttpRequest();
1.接受数据——req.responseText;
router.get('/checkname', function (req, res, next)
1.路由接收get参数——var username = req.query.username;
2.路由接收post参数——req.body.username;

从后端向前段传JSON数据

页面文件js内容(用JQuery写)

<script type="text/javascript">
    $(document).ready(function () {
        $('button').click(function (e) {
            $.ajax({
                url:'/getZZ',
                type:'get',
                data:{name:'zzq'},
                success:function (data) {
                    // 从后端取数据,并动态显示于页面
                    // 后端数据在data中
                    $('<h1></h1>').addClass('title').text(data.title).appendTo($('#container'));
                    $('<h2></h2>').addClass('des').text(data.src).appendTo($('#container'));
                    $('<p></p>').addClass('content').text(data.content).appendTo($('#container'));
                },
                error:function (err) {

                }
            });
        });
    });
</script>

路由index.js配置

router.get('/getzz', function (req, res, next) {
    var obj = {
        title:'今日头条:lalalalalla',
        src:'今日来源:hehehehehehe',
        content:'buzhiodao 不知道。。。。'
    }
    res.json(obj);
});
注意:post写法相同,但传递的方式不同,接收用req.body接收

跨域访问

什么是源

源是指资源,网络中能请求到的都是资源。请求资源需要使用统一资源定位符。(Uniform Resource Locator,简称URL)

什么是同源

两个页面拥有相同的协议、端口、主机域名,name这两个就是同源页面。

跨域请求中间件

文档网站

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});
上一篇下一篇

猜你喜欢

热点阅读