我有一个页面来编辑页面包括一个带有两个按钮的表单(OK和Delete)。我通过PHP SELF发送表单。在页面的顶部有两个函数来测试POST中收到的内容,如果收到OK,则执行此操作,如果是DELETE,则执行其他操作。按DELETE按钮,我弹出CONFIRMATION消息,这个问题。如果用户在CONFIRMATION窗口中单击OK,我尝试使用函数Jquery提交表单,但它不起作用。
<?
if(isset($_POST["delete_page"])){
echo "DELETE PAGE";
}
if(isset($_POST["submit"])){
echo "SUBMIT PAGE";
}
?>
<form role="form" data-toggle="validator" method="post" action="<?echo "$_SERVER[REQUEST_URI]";?>" id="update_page_frm">
<button type="submit" class="btn btn-success" name="submit">אישור</button>
<button type="button" class="btn btn-danger" name="delete_page" id="delete_page">הסר עמוד</button>
</form>
custom.js:
$(document).ready(function() {
$('#delete_page').click(function() {
bootbox.confirm("Are you sure want to delete?", function(result) {
if (result) {
$("#update_page_frm").submit();
}
});
});
});
答案 0 :(得分:2)
将多个操作与单个表单相关联是相当常见的。更灵活的方法是不使用本机提交类型按钮,而是使用AJAX请求处理这两个操作。例如:
function callAction(action, callback) {
$.ajax({
url: '/path/to/submit/to',
data: {
action: action,
form: $('#update_page_frm').serialize()
},
success: function(response) {
callback(response);
}
});
};
$('#update_page').on('click', function(e) {
e.preventDefault();
callAction('update', function(response) {
console.log('All done!');
});
});
$('#delete_page').on('click', function(e) {
e.preventDefault();
callAction('delete', function(response) {
console.log('All done!');
});
});
请注意,上面的代码是在SO上随时写的,未经测试。应该相当接近。
答案 1 :(得分:0)
它可能是引号的问题,你的代码没有正确打开/关闭引号。试试这样:
<form role="form" data-toggle="validator" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>" id="update_page_frm" >
<button type="submit" class="btn btn-success" name="submit">אישור</button>
<button type="button" class="btn btn-danger" name="delete_page" id="delete_page">הסר עמוד</button>
</form>
答案 2 :(得分:0)
使用jquery调用文件时必须使用ajax
$("#delete_page").click(function(){
data1=$("#input").val();
$.ajax({
type:"post",
url:"file.php",
data:"data1="+data1,
beforeSend: function(){
$('#msj').html('<img src="img/Loading.gif"/> Loading...');
},
success:function(result){
alert(result);
$("#msj").html('');
}
});
});