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

Posted

技术标签:

【中文标题】如何使用 ajax jQuery 重定向指定重定向 url【英文标题】:how to specify redirect url with ajax jQuery redirect 【发布时间】:2021-12-16 16:51:18 【问题描述】:

我有一个表单,当我提交表单时,它会重定向到我从控制器指定的 url(功能控制器作为操作表单)。我已经制作了一个函数控制器来处理表单,并且当我提交表单时,我有几个不同的条件可以使 2 从 json 结果重定向。但我希望 ajax 重定向到来自 json 结果的重定向之一。

如何从 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) 

        
    );
);

【问题讨论】:

您的 "json 结果" 不是有效的 JSON @Phil 你能告诉我为什么它无效吗? 您不能在单个 JSON 响应中发送两个 JSON 对象。如果要返回多个对象,它们需要在一个数组中。 你有两个对象,它们不在一个数组中。将其粘贴到jsonlint.com 中,您会看到 不要在循环中使用echo json_encode()。将每个对象压入一个数组,最后使用echo json_encdeo($array); 【参考方案1】:

我找到了解决方案。这就是我所做的。 我在控制器中使用的函数中创建了一个变量 $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 变量的最新重定向。因此,如果您有多重重定向,则唯一使用的重定向是最新的重定向。在这种情况下,我只需要最新的重定向。所以这是我的解决方案。

【讨论】:

以上是关于如何使用 ajax jQuery 重定向指定重定向 url的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ajax / JQuery / PhoneGap 重定向

JQuery Ajax 在不设置 cookie 的情况下自动重定向?

烧瓶如何在ajax调用后重定向到新页面[重复]

如果会话超时,如何在 MVC 中的 jquery ajax 调用后重定向到新页面?

Bootstrap Modal 和 Jquery Address ajax 重定向计时问题

重定向 Ajax Jquery 调用