1

JQuery Formプラグインを使用して、Ajax経由でフォームを送信しています。私はさまざまな場所からコードをまとめましたが、1つを除いてすべてが完全に機能します。

PHPsuccess処理ファイルからのデータが出力されると<div>(つまり、「メッセージ送信」応答)。そのID<div>は現在関数内で設定されています。私がやりたいのは、そのIDを関数の外に設定して、より簡単に再利用できるようにすることですが、そのIDを関数に渡す方法を一生理解することはできません。なぜなら:

  1. success:セクションに引数を設定できません。関数に名前を付けることしかできません。

  2. 他の方法で引数を渡すことができないようです。つまり、成功関数に引数を追加することはできません。つまりwriteOutput(data,divID)、他の場所で定義することはできませんdivID

関連するコードは次のとおりです。

$(formOne).ajaxForm({
    beforeSubmit: function() {
        return $(formOne).validate({
            // validation rules
        }).form();
    },
    beforeSend: function() {
        // beforeSend actions
    },
    success: writeOutput
});

function writeOutput(data) {

    var $out = $('#output');

    if (typeof data == 'object' && data.nodeType)
        data = elementToString(data.documentElement, true);
    else if (typeof data == 'object')
        data = objToString(data);

    $out.append('<div>'+ data +'</div>');
}

writeOutput()では、関数の外部でID(現在は#output)を定義するにはどうすればよいですか?

4

1 に答える 1

0

これが機能するかどうかはわかりませんが、直接的な答えではありません。

「success:セクションで引数を設定できません」の場合、次のように実行できます。

$(formOne).ajaxForm({
    beforeSubmit: function() {
        return $(formOne).validate({
            // validation rules
        }).form();
    },
    beforeSend: function() {
        // beforeSend actions
    },    
    success: writeOutput,
    context: { extra_arg: 'some_value' }
});

function writeOutput(data) {
    var extra_var_val = this.extra_var; //the extra argument
    var $out = $('#output');

    if (typeof data == 'object' && data.nodeType)
        data = elementToString(data.documentElement, true);
    else if (typeof data == 'object')
        data = objToString(data);

    $out.append('<div>'+ data +'</div>');
}

'context'に渡されるものはすべて、コールバック関数のコンテキストになります。それがうまくいくことを願っています。

于 2013-01-15T11:36:00.773 に答える