2

「buildtask」という名前と ID を持つフォームを含むダイアログがあります。Firebugで見ると完成形です。jquery コードは、同じページで成功した他のダイアログ フォーム送信と同じです。問題は、$(this).dialog("close");コメントアウトすると、呼び出された ajax php スクリプトがデータベースを更新し、Firebug を介して表示できるテキストをエコーするように動作するためです。もちろん、ダイアログは画面に残ります。

コメントアウトを削除すると、データベースの更新が失敗し、投稿データが Firebug に表示されますが、応答タブが表示されず、サイズが 0B と表示されます。

$(this).dialog("close");内で移動しようとしまし function(data){ }たが、ダイアログが画面に残ります。

私は質問のすべての組み合わせでStackoverflowを精査しましたが、喜びはありません.6時間以上これをいじっています.

    buttons: {
                "Update": function() {$.post("ajax/udTManage.php", $("#buildtask").serialize(),function(data){alert("Here");});
                    $( this ).dialog( "close" );
                },
                "Cancel": function() {
                    $( this ).dialog( "close" );

                }
            },
            close: function() {
                $("#buildtask").remove();                       
                $('#tasker').submit();

            } 
4

2 に答える 2

1

を に移動し$( this ).dialog( "close" );function(data){}、リクエストの送信が完了する前にフォームが閉じられないようにする必要があります。

ただし、イベントは AJAX 呼び出しによって発生するため、使用$( this )はダイアログではなく要求を参照します。

したがって、ウィンドウを id で呼び出して、次のようにする必要があります。$("#buildtask").dialog("close");

それはうまくいくでしょう。

于 2013-03-11T19:18:41.217 に答える
0

[更新] または [キャンセル] をクリックすると、close 関数のコードが実行されることに注意してください。[更新] をクリックすると、udTManage.php がまだ実行されている間に #buildtask が削除され、#tasker が送信されます。

プロセスを知らなければ、どこで失敗しているかを判断するのは困難ですが、#tasker が送信される前に udTManage.php で何が起こっているかを完了する必要があると推測されます。そうですか?その場合、次の手順で問題を解決する必要があります。

buttons: {
    "Update": function() {
        $.post(
            "ajax/udTManage.php",
            $("buildtask").serialize(),
            function(data) {
                // anything here is executed AFTER udTManage.php is executed
                $('#tasker').submit();
            }
        );
        $(this).dialog("close");
    },
    "Cancel": function() {
        $("tasker").submit(); // assuming you need to submit even when cancelling
        $(this).dialog("close");
    }
},
close: function() {
    // This is executed the moment you click either button (because both buttons immediately call the dialog close method)
    $("buildtask").remove(); // not sure why you might need this, though
}
于 2013-03-11T19:47:12.457 に答える