是否可以将用户重定向到不同的页面/视图并返回 JSON 结果?我有一个 Web 应用程序,它对另一个 asp.net mvc Web 应用程序上的另一个方法进行跨域调用,我想在他们进行调用后将用户重定向到另一个页面/视图,但我也想返回一个 JSON 字符串到调用网络应用程序,表明用户重定向成功或出现错误。我该如何处理这种情况?
这是我可以用一种方法做的事情还是需要拆分?如果是这样,怎么做?
是否可以将用户重定向到不同的页面/视图并返回 JSON 结果?我有一个 Web 应用程序,它对另一个 asp.net mvc Web 应用程序上的另一个方法进行跨域调用,我想在他们进行调用后将用户重定向到另一个页面/视图,但我也想返回一个 JSON 字符串到调用网络应用程序,表明用户重定向成功或出现错误。我该如何处理这种情况?
这是我可以用一种方法做的事情还是需要拆分?如果是这样,怎么做?
如果我理解正确,您在这里有三个系统交互:
如果我仍然理解正确,场景是客户端正在向远程服务器发出请求,但服务器需要知道该请求的结果?
由于请求是在 Client 和 Remote Server 之间进行的,因此 Server 不参与,也无法直接接收 Remote Server 的响应。但是客户端可以处理这种交互。一种方法可能是这样的:
在大多数伪代码中,最终可能看起来像这样:
$.ajax({
url: 'http://remoteserver/request_target'
}).done(function(data, textStatus, jqXHR) {
// success, notify Server and redirect
$.post('http://server/success_handler', successData)
.done(function () {
window.location.replace('http://remoteserver/redirect_target');
});
}).fail(function(jqXHR, textStatus, errorThrown) {
// fail, notify Server
$.post('http://server/error_handler', errorData);
});
所以首先它对远程服务器执行 AJAX 请求。如果请求成功,它将向服务器执行 AJAX 请求以通知成功,然后在该请求之后执行重定向。如果对远程服务器的请求失败,则向服务器执行 AJAX 请求以通知错误。(successData
或者errorData
,如果有的话,取决于您需要发送到服务器的任何内容。)
这就是基本场景所需的全部内容:
$.ajax {
..
..
..
success: function(data) {
alert(data.message_for_user);
// redirect from client
window.location.replace(data.url_to_redirect);
// or make another request to your server and redirect directly from server
makeRequestToRedirectController(data.some_message_for_server)
}
}