4

beforeSend の ajax フォーム送信にバインドしています。

私の関数は次のようになります。

submitStuff : function(e, xhr, settings) {

    settings.data = {
            invitation : {
                emails : me.returnsArrayX(),
                bucket2 : me.returnsArrayY(),
                bucket3 : me.returnsArrayZ()
            }
    }

}

これは、次のように手動でサーバーに送信していたときに機能していました。

    $.ajax({
        type: 'POST',
        url: '/myurl',
        dataType: 'json',
        data: {
            invitation : {
                emails : me.returnsArrayX(),
                bucket2 : me.returnsArrayY(),
                bucket3 : me.returnsArrayZ()
            }
        }
    });

しかし、Rails UJS を使用しているので、組み込みのフォーム サブミッター (data-remote) を使用したいと考えています。上記で settings.data が機能しないのはなぜですか? オブジェクトを配列などに変換する必要がありますか?

ありがとう

4

3 に答える 3

1

これを試して

submitStuff : function(e, xhr, settings) {

  settings.data += "&serialized=data";

}

同様の投稿: Rails で jquery-ujs ポスト リクエストにデータを追加するにはどうすればよいですか?

于 2012-08-07T12:02:34.007 に答える
1

データをシリアル化するには、jQuery.param(obj)を使用します。したがって、pdpMathi の例からすると、次のようになります。

submitStuff : function(e, xhr, settings) {

    data = {
            invitation : {
                emails : me.returnsArrayX(),
                bucket2 : me.returnsArrayY(),
                bucket3 : me.returnsArrayZ()
            }
    }
    settings.data += "&serialized=" + jQuery.param(data)

}

jsFiddleのいくつかの簡単なサンプル データで上記が何をするかを確認できます。これにより、データを簡単に操作し、完了したときにのみシリアル化できます。

于 2012-08-08T11:58:52.923 に答える