Javascript Ajax调用后重定向到另一个页面?

Javascript Ajax调用后重定向到另一个页面?,javascript,ajax,asp.net-mvc,razor-pages,Javascript,Ajax,Asp.net Mvc,Razor Pages,所以这对我来说很难解释。我有一个razor页面,当点击一个按钮时,它调用一个javascript函数,该函数对后端的处理程序进行ajax调用。处理程序执行一些操作并获取一个id,我希望将其传递到另一个页面。我试图在后端使用RedirectToPage功能,但屏幕从未打开。它成功地调用了处理程序,但当处理程序返回时,什么也没有发生。有办法做到这一点吗 下面是通过单击按钮调用的javascript/ajax代码 @section scripts{ <script> // Get the

所以这对我来说很难解释。我有一个razor页面,当点击一个按钮时,它调用一个javascript函数,该函数对后端的处理程序进行ajax调用。处理程序执行一些操作并获取一个id,我希望将其传递到另一个页面。我试图在后端使用RedirectToPage功能,但屏幕从未打开。它成功地调用了处理程序,但当处理程序返回时,什么也没有发生。有办法做到这一点吗

下面是通过单击按钮调用的javascript/ajax代码

@section scripts{
<script>

// Get the account ID Data from the row selected and return that to the program.
function getIDData(el) {        

    var ID = $(el).closest('tr').children('td:first').text();
    var iddata = {
        'ID': ID
    }        

    console.log(iddata);
    return iddata;
}

// Submit the data to a function in the .cs portion of this razor page.
$('.copybtn').click(function () {
    var accountid = JSON.stringify(getIDData(this));
    $.ajax({
        url: '/Copy_Old_Account?handler=CopyData',
        beforeSend: function (xhr) {
                        xhr.setRequestHeader("XSRF-TOKEN",
                                $('input:hidden[name="__RequestVerificationToken"]').val());
                },
        type: 'POST',
        dataType: 'json',            
        data: { offenderid: offenderid },    
        success: function (result) { 

        }, 
    });
});

</script>
}

任何帮助都将不胜感激,如果没有意义,我可以尝试澄清任何问题。

重定向到页面返回301响应,其格式如下:

HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp
要在ajax调用后重定向,可以通过以下方式重定向到请求的url:

success: function (result) { 
window.location = result.getResponseHeader('Location');
}

我想这就是你想要的,我在MVC 5项目中做了类似的事情,但我还没有在Razor页面中测试过:

这将是您的方法,请注意,您应该将控制器添加到
Url.Action
,我个人还没有尝试将参数与Url一起传递,但我认为它可以正常工作

[HttpPost]
公共行动结果提交内容()
{
返回Json(新的{redirectUrl=Url.Action(“帐户信息”,“您的控制器名称”,新的{id=Account.Account\u id}”);
}
然后这就是您的Ajax请求,我更新了
success
部分

//将数据提交到此页面的.cs部分中的函数。
$('.copybtn')。单击(函数(){
var accountid=JSON.stringify(getIDData(this));
$.ajax({
url:“/Copy\u Old\u Account?handler=CopyData”,
发送前:函数(xhr){
xhr.setRequestHeader(“XSRF-TOKEN”,
$('input:hidden[name=“\uu RequestVerificationToken”]”)val();
},
键入:“POST”,
数据类型:“json”,
数据:{INQUERID:INQUERID},
成功:函数(结果){
if(result.redirectUrl!==未定义){
window.location.replace(result.redirectUrl);
}否则{
//找不到重定向,请执行其他操作
}
}, 
});
});
这是没有测试,所以我只能希望它的工作为您现在


编辑:更新了Url。使用OP的视图名称和参数的操作

是否尝试返回id,然后从ajax请求以成功状态重定向?@joseatchange我没有尝试过,也不确定具体如何操作。你有我可以看的例子吗?看看第一个答案,他指的是对象传递到
ajax
方法,一旦请求得到肯定响应,就会触发成功。普通html表单可能比ajax更好,因为您不想在不重新加载页面的情况下发送/检索数据。此答案的可能重复帮助我获得了所需的内容。由于某种原因,我无法使url.action对我起作用,但我一直在调整它,直到我得到下面的答案才能起作用:返回新的JsonResult(new{path=“Account\u Information?”=“+infractor.Account\u ID.ToString());对于我的ajax,我使用了window.location.replace,正如您在回答中所述,这非常有效。在重定向到PHP中的另一个页面后,如何继续运行ajax调用?我的ajax调用正在执行一项非常复杂的任务,这将需要很长时间,所以,在页面重定向之后是否可以运行ajax调用?我在submit按钮上进行ajax调用,单击该按钮后,页面重定向到另一个页面,然后开始ajax调用。
success: function (result) { 
window.location = result.getResponseHeader('Location');
}