1

Mac にアカウント データベースがあり、HTML、Javascript、および PHP を使用して、削除ボタンをクリックした後にアカウントを削除します。FireFox では毎回機能し、Safari では毎回失敗します (失敗すると、削除要求は完全に無視されます)。

基本的に、これは私のコードが行っていることです...

  1. フォーム内のボタンonclickが js func を呼び出し、verifyDelete()削除の選択を確認するように求めます
  2. 次に、onsubmit同じフォームから js func を呼び出しますdelAccount()
  3. 最後に、delAccount()phpXMLHttpRequestページを呼び出してアカウントを削除します。

XMLHttpRequestAJAX を見て、 を使用するというアイデアを得ました。AJAX が使用するすべての ReadyState、Response などは必要なかったので、必要なものだけを使用しました。delAccount()関数内で行ったことを行うことは「合法」ですか? たぶんそれがSafariが失敗している理由ですか?

どんな助けでも大歓迎です、ここに私のコードがあります...

ファイル - View.php

<?php
    // some code
?>
        <form method="get" onsubmit="return delAccount('<?php echo $acctNum; ?>')">
            <input type="hidden" name="acctName" value="Blah” />
            <button onclick="return verifyDelete()" >Delete</button>
        </form>
<?php
    // some code
?>

ファイル - common.js

function verifyDelete() {
    var r=confirm("Are you sure you want to Delete this?\r\n\n" +
        "A)  'Cancel' delete request\r\n" +
        "B)  'OK', delete\r\n");
    if (r == false) {
        return false;
    }
    else {
        return true;
    }
}

function delAccount (acctNum) {
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        var xmlDelete = new XMLHttpRequest();
    }
    xmlDelete.open("GET", "delAcct.php?q=" + acctNum, true);
    xmlDelete.send(null);
    return false;
}

ファイル - delAcct.php

<?php
    // code to delete account
?>
4

2 に答える 2

1

フォームの送信をキャンセルしなかったため、AJAX 要求が送信される前に、フォームが送信される (現在のページがアンロードされる) 可能性があります。

の呼び出しを変更しますdelAccount():

<form method="get" onsubmit="return delAccount('<?php echo $acctNum; ?>')">

これを末尾に追加しますdelAccount()

return false;

...フォームの送信を回避するもの

その他: GET を使用する場合、send-method はnull引数として必要です

于 2012-07-01T01:52:19.313 に答える
-1

私は何かを見落としました。私はただ交換trueする必要がありfalseましたXMLHttpRequest...

xmlDelete.open("GET", "delAcct.php?q=" + acctNum, false);

イベントを同期させることはできますが、なぜこの機能と他の機能が機能しなかったのかはよくわかりません。

于 2012-07-01T03:27:44.107 に答える