How to Manage a Redirect Request after a jQuery Ajax Call
You can manage a redirect request after a jQuery call by using an approach by JSON.
All the responses to Ajax requests have the status code 200 and the body of the response containing a JSON object that is constructed on the server. On the client, JavaScript can use the JSON object to decide further actions. The browser processes the redirect and delivers a 200 code with the content of the redirect destination. If you perform an HTTP redirect, the redirect never trigger the Ajax success callback.
Here is a jQuery code:
$.ajax({
type: "POST",
url: reqUrl,
data: reqBody,
dataType: "json",
success: function (data, textStatus) {
if (data.redirect) {
// data.redirect contains the string URL to redirect to
window.location.replace(data.redirect);
} else {
// data.form contains the HTML for the replacement form
$("#my-form").replaceWith(data.form);
}
}
});
Here we have an Ajax request with 2 possible responses where one redirects the browser to a new page, and the other replaces an existing HTML form on the current page with a new one. The JSON data object is constructed on the server to have 2 members: data.redirect and data.form.
You can also use window.location.href instead of window.location.replace(), but window.location.replace() is better than the first, as replace() does not keep the originating page in the session history.