0

我有两个数据表,我使用 Javascript 和 jQuery 将它们合并在一起。我想将此数据发布到 Rails 控制器操作,但操作的结果需要显示在另一个视图中,我有点厌倦了弄清楚如何从 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 回答