小熊奶糖(BearCandy)
小熊奶糖(BearCandy)
发布于 2024-05-21 / 16 阅读
0
0

Layui引用JQuery,layer实训01

JQuery

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>用户登录</title>
    <link rel="stylesheet" href="/static/admin/css/layui.css">
</head>

<body>

    <div class="continar">
        <div class="login">
            <form method="post" action="/apiadmin">
                <div class="title">
                    <h1>管理登录</h1>
                </div>
                <hr size="2px" width="100%" color="black">
                <div class="body">
                    <div class="input">
                        <label for="">用户登录</label>
                        <input type="text" name="username">
                    </div>
                    <div class="input">
                        <label for="">用户密码</label>
                        <input type="password" name="password">
                    </div>
                    <div class="input">
                        <input type="submit" name="提交">
                    </div>
                </div>
            </form>
        </div>
    </div>
</body>
<script src="/static/admin/js/layui.js"></script>
<script>
    console.log(layui);
    layui.use(['layer','jquery'], function () {
        var $ = layui.jquery;
        var layer = layui.layer;
// 在JavaScript的事件处理函数中,当你定义了形参(如e或event),即使在调用该函数时没有直接传递实参,
// 浏览器仍会自动为你传递一个事件对象作为实参。这是因为当事件发生时,浏览器或JavaScript运行环境负责
//创建一个表示该事件的对象,并将其作为第一个参数传递给事件处理函数。
// 在这个场景中,代码$('[type="submit"]').click(function (e) { ... })
//绑定了一个点击事件处理器到所有类型为submit的按钮上。当这些按钮被点击时,jQuery确保了对应的事件对象
//(包含有关事件的所有信息)被自动传递给这个匿名函数,即使你在函数定义中没有显式地在点击事件触发时传递任何参数。
// 因此,当你在函数内部使用e.preventDefault();时,实际上是访问了这个由浏览器自动提供的事件对象,并调用了它的
// preventDefault方法,从而阻止了表单的默认提交行为。这就是为什么即便没有显式传递实参,你仍然能够阻止表单提交的原因。
        $('[type="submit"]').click(function (e) { 
            e.preventDefault();
            console.log('成功');
            $.ajax({
                type: "post",
                url: "/apiadmin",
                data: "data",
                dataType: "json",
                success: function (response) {
                    if (response.code == 0){
                        layer.msg(response.msg, {icon: 6}); 
                    }else{
                        layer.msg(response.msg, {icon: 2}); 
                    }
                }
            });
        });  
    });  
</script>

</html>

解释代码

在JavaScript中,特别是在事件处理的上下文中,e(或者其他常见的命名如 event)是一个自动传递给事件处理函数的参数。这个参数代表了发生的事件本身,包含了与该事件相关的一系列信息,比如事件的类型、目标元素、事件发生的时间、键盘按键状态(如果是键盘事件)等。

当你定义一个事件处理函数时,即使你在函数签名中没有明确写出这个参数(例如 function() {...} 而非 function(e) {...}),大多数现代库和环境(包括原生JavaScript)都会自动为你提供这个事件对象。但在使用如jQuery这类库时,为了清晰和遵循最佳实践,通常会明确地声明这个参数,即写成 function(e) {...} 形式,这样就可以在函数体内访问和使用这个事件对象了。

在代码示例中,e.preventDefault(); 使用了这个事件对象来阻止浏览器的默认行为,这是通过访问事件对象的 preventDefault方法实现的。

这段代码是使用jQuery编写的一个事件处理函数,它绑定了一个点击事件到所有 type属性为 submit的HTML元素上(通常是指提交按钮)。当这些按钮被点击时,会执行一系列操作。下面是逐步解析:

  1. '$('[type="submit"]').click(function () { ... })': 这一行是说,选取所有类型为 submit的元素(通常是表单中的提交按钮),并对它们绑定一个点击(click)事件处理器。当这些按钮被点击时,大括号内的函数会被执行。

  2. e.preventDefault();: 这是在事件处理函数内部的第一条语句,e代表事件对象,默认情况下,当submit类型的按钮被点击时,表单会提交并刷新页面。通过调用 e.preventDefault()方法,阻止了这一默认行为,确保AJAX请求可以完成而不触发页面刷新。

  3. console.log('成功');: 这行代码用于在浏览器的控制台输出一条信息——"成功",这主要是为了调试目的,帮助开发者确认这个部分的代码是否被执行。

  4. $.ajax({ ... }): 这是一个使用jQuery实现的AJAX请求。

    • type: "post": 指定请求的方法为POST。
    • url: "/apiadmin": 设置请求的URL为 /apiadmin,这是一个相对路径,实际请求的完整URL会基于当前页面的地址构建。
    • data: "data": 这里 data字符串作为发送到服务器的数据,实际上在真实应用中,你可能需要将具体的数据(如表单数据)序列化后放在这里。
    • dataType: "json": 指定期望从服务器收到的数据格式为JSON。
    • success: function (response) { layer.msg('成功'); }: 当AJAX请求成功时,会执行这个函数。这里使用了一个名为 layer.msg的方法来显示一个消息框,内容为"成功"。layer.msg通常指的是Layer插件,一个常用的Web弹层组件,用于展示信息提示框等。

综上所述,这段代码的功能是:当用户点击任何type为submit的按钮时,阻止表单的默认提交行为,然后通过AJAX发起一个POST请求到"/apiadmin",期望接收JSON格式的响应,并在请求成功时,通过Layer插件显示一个“成功”的消息提示。

注意:

在JavaScript的事件处理函数中,当你定义了形参(如e或event),即使在调用该函数时没有直接传递实参,
浏览器仍会自动为你传递一个事件对象作为实参。这是因为当事件发生时,浏览器或JavaScript运行环境负责
创建一个表示该事件的对象,并将其作为第一个参数传递给事件处理函数。在这个场景中,代码$('[type="submit"]').click(function (e) { ... })绑定了一个点击事件处理器到所有类型为submit的按钮上。当这些按钮被点击时,**jQuery确保了对应的事件对象(包含有关事件的所有信息)被自动传递给这个匿名函数,**即使你在函数定义中没有显式地在点击事件触发时传递任何参数。**因此,当你在函数内部使用e.preventDefault();时,实际上是访问了这个由浏览器自动提供的事件对象,并调用了它的preventDefault方法,从而阻止了表单的默认提交行为。**这就是为什么即便没有显式传递实参,你仍然能够阻止表单提交的原因。

安装插件实现Jquery快速输入

jQuery Code Snippets


评论