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ページを出力することに注意する必要があります。javascriptコードは、すべてのphpが実行された後にのみクライアントで実行されます。

より洗練された解決策は、AJAXリクエストを送信する前に確認を求めることです。

また、あなたのajax呼び出しは、あなたが期待していることをしていないようです。PHPに送信する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に保存され、定義する必要のある関数に渡されdeleteSomething(replyID)ます(できればhead、JQuery libの後のドキュメントで)。

<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にバインドする代わりにID、イベントで関数呼び出しを追加したため、これらは不要になりました。onclick

于 2012-05-05T02:31:25.750 に答える