0

Javascript と jQuery を使用してマージする 2 つのデータテーブルがあります。このデータを Rails コントローラー アクションに POST したいのですが、アクションの結果を別のビューに表示する必要があり、AJAX POST から別のアクションにリダイレクトする方法を理解するのに少し疲れています (表示を拒否するだけです)。

だから今私の質問は、このコードを実際に投稿して別のアクションにリダイレクトするように変更するにはどうすればよいですか?

私の元のコードは次のとおりです。

submithash = {}
submithash['standard_id'] = $("#app_standard_id").val()
submithash['apps'] = apps

hash = { type: "POST", url: "create_all", data: submithash }
$.ajax(hash)

これは、Rails コントローラー アクションに正しく送信されたという点で非常にうまく機能しましたが、もちろん、Ajax 送信からリダイレクトして、実際のページをユーザーに実際に物理的に表示するクリーンな方法はないようです。

私は試した:

$form = $("<form>").attr("method", "post").attr("action", "create_all")
$("<input type='hidden'>").attr("name", "standard_id").attr("value", $("#app_standard_id").val()).appendTo($form)
$("<input type='hidden'>").attr("name", "apps").attr("value", apps).appendTo($form)
$form.submit

もちろん、それは機能しません。少し奇妙ですが、何もしません。

4

2 に答える 2

0

あなたの質問が正しく理解できれば、「create_all」への ajax 呼び出しが完了したときにページを別の URL にリダイレクトしたいと考えています。

したがって、次のように成功コールバック関数を使用できます。

hash = { type: "POST", 
         url: "create_all", 
         data: submithash, 
         success: function(data){
            //Here you can write your redirection code 
            //this function will be called when ajax completes successfully
            window.location = "url"//redirect url;
            //or you can also start another ajax
         }
       };
$.ajax(hash);

また、ここで jquery.ajax()のドキュメントをチェックしてください

于 2012-09-24T17:41:23.460 に答える
0

私はこのjQueryプラグインを使用することになりました:

(function($) {
$.extend({
    getGo: function(url, params) {
        document.location = url + '?' + $.param(params);
    },
    postGo: function(url, params) {
        var $form = $("<form>")
            .attr("method", "post")
            .attr("action", url);

        $.each(params, function(name, value) {
            $("<input type='hidden'>")
                .attr("name", name)
                .attr("value", value)
                .appendTo($form);
        });
        $form.appendTo("body");
        $form.submit();
    }
});
})(jQuery);

渡されたものは何でもその場でフォームを構築し、それをドキュメントに追加します。次に、通常の POST (または呼び出す内容に応じて GET) を実行します。

于 2012-09-27T19:03:00.303 に答える