0

我正在尝试确认删除某些内容,但似乎无法使其正常工作。

当“deleteReply”按钮时,我收到一条警报消息,但据我所知,没有其他任何事情发生。我试图简单地回显发布的变量,但它似乎不起作用。

<input type="button" id="deleteSomething" value="Delete" />
<script type="text/javascript">
$(document).ready(function(){
   $('#deleteSomething').click(function() {
      if (!confirm("Are you sure?"))
        return false;
    $.post('deleteProcessing.php', "replyID=" + replyID, function(response) {
        alert(response); 
    });
  });
});
</script>

在我的删除处理页面上,我只有

$echo $_POST['replyID'];
4

2 回答 2

1
<input type="button" id="deleteSomething" value="Delete" />
<div id="yesno" style="display:none;">
  <input type="button" id="buttonYes" value="Yes" />
  <input type="button" id="buttonNo" value="No" />
</div>
<script type="text/javascript">
// Here you attach a click event to the button Yes with id buttonYes
$('#deleteSomething').click(function() {
  $('#yesno').css('display', 'block');
});
$('#buttonNo').click(function() {
  $('#yesno').css('display', 'none');
});
$('#buttonYes').click(function() {
  $.ajax({
    beforeSend: function(e) {
      // Code to process before calling AJAX
    },
    url: "pathToPHPFile.php",
    dataType: "json",
    type: "POST",
    data: {
      parameter: 'Yes',
    },
    success: function (m) {
        console.log(m);
        alert(m.text);
    },
    error: function (e) {
      console.log("Something went wrong ...: "+e.message);
    },
  }); /* end ajax*/
  e.preventDefault();
});
</script>




<?php
// This is a separate php file named pathToPHPFile.php
if(isset($_POST['parameter']) && $_POST['parameter'] == 'Yes'){
  /* here you put the code that deletes the message */
  $response['text'] = 'messageDeleted'
  echo json_encode($response);
}
于 2012-05-05T01:58:54.670 回答
1

为什么你有

if(isset($_POST['deleteReply'])){
?>

在javascript函数之前?您是否期望触发基于$_POST['deleteReply']var 的 javascript 代码?

您必须记住,php 在服务器端处理并输出 HTML 页面。只有在所有 php 运行后,您的 javascript 代码才会在客户端中运行。

一个更优雅的解决方案是在发送 AJAX 请求之前要求确认。

而且,您的 ajax 调用似乎没有达到您的预期。您正在手动设置 2 个参数以发送到您的 PHP,如果您在服务器端进行确认,这些参数将毫无用处。

参数应该类似于Reply ID您要删除的回复,并将请求发送到不同的 php 文件进行处理。

我建议您像 Marian Zburlea 为您所做的那样重写您的代码。

编辑

好的,如果你想要一个简单的确认窗口,试试这个:

<input type="button" id="deleteSomething" value="Delete" />

<script type="text/javascript">

$(document).ready(function(){
    $('#deleteSomething').click(function() {
        if (!confirm("Are you sure?"))
            return false;

        $.post('delete.php', "replyID=" + replyID, function(response) {
            alert(response); 
        });
    });
});
</script>

编辑

如果您有多个删除按钮,最好的方法是将 存储replyID为传递给您的函数的参数。在您的 php 中回显您的删除按钮,如下所示:

echo '<input type="button" value="Delete" onclick="deleteSomething(\'' . $replyID . '\')" />';

这样,$replyID将存储在页面的 HTML 中,该 HTML 将传递给deleteSomething(replyID)您现在必须定义的函数(最好在headJQuery 库之后的文档中):

<script type="text/javascript">

function deleteSomething(replyID)
{
    if (!confirm("Are you sure?"))
        return false;
    $.post('deleteProcessing.php', "replyID=" + replyID, function(response) {
        alert(response); 
    });
}
</script>

请注意,我ID从按钮中删除了不生成重复 ID 并且不再需要它们,因为我在onclick事件中添加了一个函数调用,而不是像以前那样将匿名函数绑定到它们的 ID。

于 2012-05-05T02:31:25.750 回答