使用Sweet Alert(Swal)提交表单失效问题求助
解决SweetAlert确认后表单提交不触发PHP检测的问题
嘿,别担心,新手遇到这种表单提交的细节问题太正常了!咱们来一步步搞定它。
问题根源
你现在的代码里,用$('#form1').submit()提交表单时,不会带上提交按钮的name和value——因为这个方法只是触发表单的提交事件,并没有模拟“点击提交按钮”的行为。所以PHP里的isset($_POST['delete_file'])自然检测不到,也就不会输出内容了。
解决方案(两种简单的方法任选其一)
方法一:给表单添加隐藏字段(最稳妥)
在你的<form id="form1">里加一个隐藏的input字段,用来标记这是删除操作:
<form id="form1" method="post"> <!-- 你的其他表单元素 --> <input type="hidden" name="delete_file" value="1"> <button type="submit" name="delete_file" class="btn btn-danger deleteFile">Delete</button> </form>
这样不管你用哪种方式提交表单,这个隐藏字段都会被发送到PHP端,isset($_POST['delete_file'])就能检测到了。你的JS代码可以完全保持不变~
方法二:模拟点击提交按钮
如果你不想加隐藏字段,可以把JS里的$('#form1').submit()改成模拟点击提交按钮的行为,这样就会带上按钮的name和value:
jQuery('.deleteFile').click(function(event){ event.preventDefault(); swal({ title: "You sure about deleting this file?", icon: "warning", buttons: { cancel: "hmm let me think this through", confirm: "100% sure !", }, dangerMode: true, }) .then((willDelete) => { if (willDelete) { // 模拟点击提交按钮,带上按钮的name和value $('button[name="delete_file"]').click(); } else { return false; } }); });
额外检查点
别忘了确认你的表单标签里有method="post"属性!如果是默认的method="get",那PHP里得用$_GET['delete_file']来检测,而不是$_POST。
这样修改后,你再测试一下,应该就能看到WOOT IT WORKED!的输出啦 😊
内容的提问来源于stack exchange,提问作者Arash Barazandeh
相关产品推荐
相关产品推荐

