Py学习  »  Jquery

如何使用ajax jQuery重定向指定重定向url

user • 3 年前 • 1065 次点击  

我有一个表单,当我提交表单时,它会重定向到我从控制器指定的url(函数控制器作为动作表单)。我制作了一个函数控制器来处理表单,我有几个不同的条件,可以在提交表单时从json结果重定向2。但我希望ajax重定向到json结果中的一个重定向。

如何从json结果重定向到特定重定向?

结果是:

{"result":"ok","message":"Failed!!! ","redirect":"http:\/\/localhost\/myproject\/approval\/detail\/21?status=approve_failed"}
{"result":"ok","message":"Success!!!","redirect":"http:\/\/localhost\/myproject\/approval\/detail\/21?status=approve_success"}

这是我提交表单时重定向的方式:

var frm = $('#form-process');

frm.submit(function(e) {
    e.preventDefault();

    $.ajax({
        type: frm.attr('method'),
        url: frm.attr('action'),
        data: frm.serialize(),
        dataType: "json",
        success: function(res) {
            if (res.result == "ok") {
                if (res.redirect) {
                    window.location.href = res.redirect;
                }
                $.notify("Success. Data saved.", "success");
                $('#modalDateEst').modal('hide');
                table.ajax.reload();
            } else {
                $.notify("System gone wrong's. Please contact Administrator", "error");
            }
        },

        error: function(data) {

        }
    });
});
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130626
 
1065 次点击  
文章 [ 1 ]  |  最新文章 3 年前
user
Reply   •   1 楼
user    3 年前

我找到了解决办法。我就是这么做的。 我在控制器中使用的函数中生成一个变量$redirect。然后我提出了一些条件。

内部条件应为:

if (//condition) {
 $arred = array(
     "result" => "ok",
     "message" => "Success!!! ",
     'redirect' => base_url(//my url for the redirect)
 );

 $redirect = $arred;
}

所以在我的函数控制器中会是这样的:

function something() {
$redirect = "";


if (//condition) {
 //do something
 $arred = array(
     "result" => "ok",
     "message" => "Success!!! ",
     'redirect' => base_url(//my url for the redirect)
 );

 $redirect = $arred;
}


if (//condition2) {
 //do something
 $arred = array(
     "result" => "ok",
     "message" => "Success!!! ",
     'redirect' => base_url(//my url for the redirect)
 );

 $redirect = $arred;
}

//make the json
echo json_encode($redirect);
}

注意:此解决方案只会使jquery重定向到最新的重定向,以填充 $redirect 变量所以,如果你有多重重定向,唯一会使用的重定向是最新的一个。在这种情况下,我只需要最新的重定向。这就是我的解决方案。