layui之ajax--回调函数

问题:一个简单的AJAX提交表单操作,经常发生后台数据保存好了,前端layer弹出层没有关闭,父页面没有刷新,定位发现是回调函数没有执行!!!用Google Chrome浏览器这种现象较少,而Safari 和 firefox浏览器100%发生。

解决过程:困扰了很久,以为是哪里代码有问题,检查来检查去没发现问题,后来基本定位到layUI这个框架。

结果:加上 红色字体 return false,解决!!

<script>
    layui.use(['layer','form'], function(){
        var layer = layui.layer
           ,form = layui.form;

        //监听表单提交
        form.on('submit(go)', function(data){
            $.ajax({
                url:'userAction_addOrUpdate.action',
                method:'post',
                data:data.field,
                dataType:'JSON',
                success:function(res){
                    if(res.code='0'){
                        parent.closeIframe(res.msg);
                    }
                    else
                        alert(res.msg);
                },
                error:function(data){
                    alert("服务器繁忙");
                }
            })
            return false;//如果不加这句,则ajax的回调函数不执行
        });
    });
</script>
  •  

官方文档说明:

//监听表单提交
form.on('submit(*)', function(data){
  console.log(data.elem) //被执行事件的元素DOM对象,一般为button对象
  console.log(data.form) //被执行提交的form对象,一般在存在form标签时才会返回
  console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
  return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
layui 中,`layui-nav` 是一个导航栏组件,它本身并没有提供直接绑定 AJAX 事件的功能。不过,你可以在导航栏的每个菜单项上绑定点击事件,然后在事件处理函数中执行 AJAX 请求。 以下是一个示例代码,演示了如何在 layui-nav 中的菜单项上绑定 AJAX 事件: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Layui Nav AJAX Event Binding</title> <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.css"> </head> <body> <div class="layui-layout layui-layout-admin"> <div class="layui-header"> <ul class="layui-nav layui-layout-right"> <li class="layui-nav-item" id="menu1"><a href="">Menu 1</a></li> <li class="layui-nav-item" id="menu2"><a href="">Menu 2</a></li> <!-- 更多菜单项... --> </ul> </div> <!-- 更多布局代码... --> </div> <script src="https://cdn.staticfile.org/jquery/3.5.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.js"></script> <script> layui.use(['layer'], function() { var layer = layui.layer; // 绑定点击事件到菜单项 $('#menu1').on('click', function() { // 发送 AJAX 请求 $.ajax({ url: '/menu1', type: 'GET', success: function(response) { // 处理响应数据 layer.msg(response.message); }, error: function(xhr, status, error) { // 处理错误 layer.msg('Error: ' + error); } }); }); $('#menu2').on('click', function() { // 发送 AJAX 请求 $.ajax({ url: '/menu2', type: 'GET', success: function(response) { // 处理响应数据 layer.msg(response.message); }, error: function(xhr, status, error) { // 处理错误 layer.msg('Error: ' + error); } }); }); }); </script> </body> </html> ``` 在这个例子中,我们在导航栏的每个菜单项上分别添加了一个唯一的 ID(`menu1` 和 `menu2`)。 然后,在 JavaScript 部分,我们使用 jQuery 的 `$.ajax()` 方法来发送 AJAX 请求。在每个菜单项的点击事件处理函数中,我们发送相应的 AJAX 请求,并在成功回调函数中处理响应数据,使用 `layer.msg()` 方法来显示提示信息。 你可以根据需要为每个菜单项绑定不同的 AJAX 请求,并在响应成功后执行相应的操作。 希望以上示例对你有所帮助。如果还有其他问题,请随时提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值