0

フォーム送信を介して複数の情報を送信しようとしています。この送信では、false を返し (ajax であるためページ要求をキャンセル)、フォームを閉じたいと思います。残念ながら、閉じるとリターンも行うようです。本当だと思います。投稿リクエストが失敗しないように。これにより、ダイアログが画面に表示されたままになります。$("#dialog-form").dialog("close"); を呼び出すと、return false は実行されず、ページが変更されます。

誰かがこれを修正する方法を知っている場合、または何か間違ったことをしている場合は非常に役立ちます:

JavaScript:

$('#modifyConsoleForm').submit(function(evt) {
    $.ajax({
        type : 'POST',
        url : jQuery("#modifyConsoleForm").attr("action"),
        data : jQuery(this).serialize(),
        dataType : "json",
        success : function(data) {
            hideError();
        },
        error : function(data) {
            setError('modify of console failed');
        }
    });
    $("#dialog-form").dialog("close");
    return false;
});

そして私のダイアログの初期化:

$("#dialog-form").dialog({
    autoOpen : false,
    height : 300,
    width : 350,
    modal : true,

    close : function() {
        allFields.val("").removeClass("ui-state-error");
    }
});

また、ダイアログを閉じるときに常に false を返そうとしましたが、うまくいかなかったようです。何か不足していますか?

4

2 に答える 2

0

event.preventDefault() を使用して、ページの変更を停止してみてください

例えば:

$('#modifyConsoleForm').submit(function(evt) {

    evt.preventDefault();

    $.ajax({
        type : 'POST',
        url : jQuery("#modifyConsoleForm").attr("action"),
        data : jQuery(this).serialize(),
        dataType : "json",
        success : function(data) {
            hideError();
        },
        error : function(data) {
            setError('modify of console failed');
        }
    });
    $("#dialog-form").dialog("close");
    return false;
});
于 2012-06-26T07:07:59.913 に答える
0

ダイアログを閉じて true/false を返すのは、成功関数とエラー関数で ajax リクエストが終了したときに行う必要があります。

また、ajax リクエストの実行中にアクティビティ インジケーターを配置し、サーバーからの応答を受け取ったらそれを非表示/削除することも賢明です。これにより、ユーザーはプロセスが進行中であることを知ることができます。

于 2012-06-26T07:08:49.147 に答える