layer弹出层提交ajax请求成功,但是不执行success(error)方法

layer层弹出框中请求ajax的时候,后台的数据都请求成功了,但是就是不执行success,如果是提交错了,就连error也不执行,原因如下:

还需要在controller的方法上边添加@ResponseBody,只有添加了这句话,返回给HTML的json字串才能够正常的解析

页面代码:

<form  class="form form-horizontal" id="roleadd">
		<div class="row cl">
			<label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>角色名称:</label>
			<div class="formControls col-xs-8 col-sm-9">
				<input type="text" class="input-text" value="" placeholder="" id="rolename" name="rolename">
			</div>
		</div>
		<div class="row cl">
			<label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>角色状态:</label>
			<div class="formControls col-xs-8 col-sm-9">
				<span class="select-box">
					<select class="select" size="1" name="city" >
						<option value="1" style="height: 50px;"  name="rolestate" >正常</option>
						<option value="0" style="height: 50px;"  name="rolestate" >异常</option>
					</select>
				</span>
			</div>
		</div>
		<div class="row cl">
			<label class="form-label col-xs-4 col-sm-3">备注:</label>
			<div class="formControls col-xs-8 col-sm-9">
				<input type="text" class="input-text" value="" placeholder="" id="roledesc" name="roledesc">
			</div>
		</div>
		<div class="row cl">
			<div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
				<button type="submit" class="btn btn-success radius"  id="admin-role-save" name="admin-role-save"><i class="icon-ok"></i> 确定</button>
			</div>
		</div>
	</form>

原始代码:没有加return false

$("#roleadd").submit(function () {
    var rolestate=$(".select option:selected").val();
    var roledesc=$("#roledesc").val();
    var rolename=$("#rolename").val();
    $.ajax({
        type: "POST", // 提交方式 get/post
        url: "/filemanager/role/roletest", // 需要提交的 url
		dataType:"json",
        data: {
            "rolestate": rolestate,
            "roledesc":roledesc,
            "rolename" :rolename,
        },
        success:function (data) {
            alert("成功");
        },
        error:function () {
            alert("失败");
        }
    });
    //  ** 注意这儿,原本没加return false ,**
    var index = parent.layer.getFrameIndex(window.name);
    // alert("hahaha")
    parent.layer.close(index);
})

修改后的代码

$("#roleadd").submit(function () {
    var rolestate=$(".select option:selected").val();
    var roledesc=$("#roledesc").val();
    var rolename=$("#rolename").val();
    $.ajax({
        type: "POST", // 提交方式 get/post
        url: "/filemanager/role/roletest", // 需要提交的 url
		dataType:"json",
        data: {
            "rolestate": rolestate,
            "roledesc":roledesc,
            "rolename" :rolename,
        },
        success:function (data) {
            alert("成功");
            var index = parent.layer.getFrameIndex(window.name);
   			 // alert("hahaha")
   			 parent.layer.close(index);
        },
        error:function () {
            alert("失败");
        }
    });
    return false; // ** 加了return false**
    
})

现在可以执行success方法了,原因如下:
layer 在弹出层做表单提交 点击提交可以和后台交互,但是提交完成后ajax的success不执行。因为点击提交后刷新了弹出层,当成功后,ajax保留的上次提交的报头信息和刷新完的页面信息不一样,所以ajax就执行不了了。就相当于你爬山上去走的这条路,下山时路中间有一段毁了,你要绕路,这样在这条路上等你的人肯定等不到。
最后找到原因,在最后面忘记加return false了

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值