I'm working with an older system that is using jQuery 1.2.6. I am sending an AJAX Request via the jQuery.ajax
function. The URL that it is hitting is sending a 302 HTTP Redirect response and eventually ends up with a 200 HTTP OK response. I have registered both a success
and a complete
callback, however neither of them are called.
My question is: Are there any callbacks that can/will be called after a redirect occurs?
jQuery.ajax({
type: "GET",
url: url,
data: null,
dataType: "json",
async: false,
success: function(data, textStatus) {
alert("SUCCESS CALLED: " + textStatus);
},
complete: function(xhr, status) {
alert("COMPLETE CALLED");
}
});
NOTE: The response is HTML, not JSON, however changing the dataType
to html
alters the request. It sends an OPTIONS
request instead of a GET
request, and it also no longer redirects. I need these redirects to occur.
As per the comments:
This will happen when you send a crossdomain request. I.e., the
url
does not point to the same domain as where this script is been served from. This namely violates the Same Origin Policy. Not having access to the server code also confirms that it runs on a different domain. The HTTPOPTIONS
request sent by jQuery should let the server return a response with anAllow
header with a list of request methods which are allowed to be used on the particular URL so that jQuery could then continue accordingly. This is apparently not happening.If the server is really completely out your control, you'd need to create a proxy on your server which connects the desired URL and streams its response back. Then alter the jQuery
url
to point to the proxy URL instead. It's unclear what programming language you're using, but your question history suggests that you're familiar with Java, in that case you can use a simple servlet withjava.net.URLConnection
or Apache HttpComponents Client for this.Use jquery ajax option
dataType: 'jsonp'
to perform the redirect for cross-domain requests. (Was tested in FF/Chrome browsers)
But this resolution is useful only if you are not handle the response or if the cross-domain-url supports jsonp approach.