0

PHPページでjavascript/jqueryを使用してメッセージを削除する確認ボックスを設定しようとしています。変数は JavaScript 関数で正しく設定されていますが、関数をページに正しく投稿できません。

私は頭に以下を含めました

<script src="http://code.jquery.com/jquery-latest.js"></script>

今コードのために。

//displays a list of messages w/ button to delete 
if(mysql_real_escape_string($_GET['msg'] == "msgDetail")){
            $msg->messageDetail($msgID);
            $action = "delete";
            $msgID = mysql_real_escape_string($_GET['msgID']);

            //display a delete button that sends variables to javascript function
            echo '<td>'.'<input type="button" value="Delete Message" name = "deleteMessage" onclick="deleteMessage(\'' . $msgID .'\', \'' .$action. '\',\'' .$userid. '\')" />'.'</td>';
        }
        ?>

        //javascript function for confirmation to delete message
        <script type="text/javascript">
        function deleteMessage(msgID, action, userid){
            //document.write(msgID + action + userid) values are correctly showing up here when uncommented
                if (!confirm("Are you sure?"))
                    return false;
                $.post('messages.php',"msgID=" + msgID + "&action=" + action + "&user=" + userid, function(response) {
                    //window.location.reload()
                });
        }
        </script>
    <?

      //check to see if the values have been posted
    if($_POST['action']) == "delete"){
        echo "success!";
             ....more code
    }

ご覧のとおり、messages.php に変数を投稿しようとしていますが、投稿されているかどうかを確認しても何も起こりません。

4

1 に答える 1

1

JavaScript だけを見ると、deleteMessage()乱雑な文字列処理を回避し、デバッグ中により良いフィードバックを提供するために、次のように記述できます。

function deleteMessage(msgID, userid) {
    if (!confirm("Are you sure?")) { return false; }
    var data = {
        'action': 'delete',
        'msgID': msgID,
        'user': userid
    };
    $.ajax({
        url:'messages.php',
        data: data,
        type: 'POST',
        success: function(response) {
            alert(response);//debug message
            //window.location.reload()
        },
        error: function((jqXHR, textStatus, errorThrown) {
            alert((typeof errorThrown == 'string') ? errorThrown : textStatus);//debug message
        }
    });
}

$.post()すべてがデバッグされたときに戻すことを選択できます。

'action': 'delete'ハードコードされていることがわかります。これは些細な点ですが、'delete' を渡す意味deleteMessageはありません。なぜなら、そのように名前が付けられた関数は他に何もしないからです。<td><input...onclick="..."/></td>HTML が構築されている場所に、対応する変更を加える必要があります。

于 2012-05-25T02:47:05.740 に答える