layui之ajax巨坑

摘要:
当使用layui作为前端框架时,当请求ajax时,回调函数不会执行。找到了各种原因,对ajax参数类型和webapi返回类型的各种更改是不可行的。最后,发现layui默认为表单提交。如果您希望他执行ajax回调,只需返回false即可查看代码layui。use(['form','layer'],function(){$=layui.jquery;varform=layui.form,layer=layui.layer;//自定义验证规则form.verify({nikename:function(value){if(value.length<5){return“昵称必须至少为5个字符”;}},pass:[/(.+){6,12}$/,“密码必须为6到12位数字”),repass:function(value){if('#L_pass').val()!

在使用layui做前端框架的时候,在请求ajax时,回调函数不执行问题,找了各种原因,各种的更改ajax参数类型和webapi返回类型 各种不行,最后发现layui默认是form提交,想要让他执行ajax回调就只是一句话 return false 看代码

layui.use(['form', 'layer'], function () {
$ = layui.jquery;
var form = layui.form
,layer = layui.layer;

//自定义验证规则
form.verify({
nikename: function (value) {
if (value.length < 5) {
return '昵称至少得5个字符啊';
}
}
, pass: [/(.+){6,12}$/, '密码必须6到12位']
, repass: function (value) {
if ($('#L_pass').val() != $('#L_repass').val()) {
return '两次密码不一致';
}
}
});

以上只是框架加载部分

//监听提交
form.on('submit(add)', function (data) {
if (post_adduser) return;
post_adduser = true;
var UserName = $("#username").val();
var Password = $("#L_pass").val();
var FullName = $("#L_email").val();
var Phone = $("#phone").val();
var index = document.getElementById("Dropplace").selectedIndex;
var p = document.getElementById("Dropplace").options[index].value;
var index1 = document.getElementById("Droproles").selectedIndex;
var c = document.getElementById("Droproles").options[index1].value;
var RoleIDs = p + "||" + c;
var loading = layer.load(1);
var user = "{"UserName":"" + UserName + "","Password":"" + Password + "","FullName":"" + FullName + "","Phone":"" + Phone + "","RoleIDs":"" + RoleIDs + ""}";
$.ajax({
url: "http://xxxxxxxxxxxxxx/api/User/AddUser",
//dataType: 'text',
contentType: "application/json",
data: user, //请求的附加参数,用json对象
method: 'POST',
success: function (res) {
if (res == true) {
post_adduser = false;
layer.close(loading);
layer.msg("添加成功", { icon: 6, time: 2000 }, function () {
// 获得frame索引
parent.location.reload();
var index = parent.layer.getFrameIndex(window.name);
//关闭当前frame
parent.layer.close(index);
});
}
else {
post_adduser = false;
layer.close(loading);
layer.msg("添加失败", { icon: 5 });
}

},
error: function () {
post_adduser = false; //AJAX失败也需要将标志标记为可提交状态
layer.close(loading);
layer.msg("添加失败", { icon: 5 });
}
});
return false;//只此一句

免责声明:文章转载自《layui之ajax巨坑》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux dd工具磁盘读写测试分析Apache Solr配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Ajax请求中,contentType和dataType的区别

contentType: (默认: "application/x-www-form-urlencoded") 发送信息至服务器时内容编码类型。默认值适合大多数情况。如果你明确地传递了一个content-type给 $.ajax() 那么他必定会发送给服务器(即使没有数据要发送). 其他可选的类型有:form-data x-www-form-orlencod...

jquery参考手册

jQuery 选择器 选择器 实例 选取 * $("*") 所有元素 #id $("#lastname") 的元素 .class $(".intro") 的所有元素 .class,.class $(".intro,.demo") class 为 "intro" 或 "demo" 的所有元素 element $("p")...

Comet 反Ajax: jQuery与PHP实现Ajax长轮询

原文地址(http://justcode.ikeepstudying.com/2016/08/comet-%E5%8F%8Dajax-%E5%9F%BA%E4%BA%8Ejquery%E4%B8%8Ephp%E5%AE%9E%E7%8E%B0ajax%E9%95%BF%E8%BD%AE%E8%AF%A2longpoll/) 页面代码: <!DOCTY...

vue实战(4):postman测试数据、封装ajax、使用vuex管理状态

书到用时方恨少 这个阶段涉及到了vuex,本来想着不慌,用起来,使用的过程中问题还真不少 本篇涉及到的内容: ---postman 测试数据 ---封装 ajax 请求函数 ---封装接口请求函数 ---使用 vuex 管理状态 ---获取首页相关数据 0. 其它 vue实战(1):准备与资料整理vue实战(2):初始化项目、搭建底部导航路由vue实战...

php mysql jquery ajax 查询数据库三级联动

1、php 页面打开直接展示第一个select option中的数据 2、当第一个下拉列表选中的内容发生改变的时候,查询数据库填充第二个下拉列表 3、当第二个下拉列表选中的内容发生改变时,查询数据库填充第三个下拉列表 注意点: 1、查询出来的数据,如果绑定到select上 2、select cochange事件 3、ajax 请求,提交到某个php 页面,...

学会使用Web Service下(客户端访问)/(服务器端访问)

http://www.cnblogs.com/ruihua/archive/2007/10/28/940287.html http://www.cnblogs.com/ruihua/archive/2007/10/28/939932.html学会使用Web Service上(服务器端访问)     关于什么是Web Service,相信在很多地方都会有介绍...