http://api.jquery.com/jQuery.ajax
jQuery.ajax()は非同期のhttp request(GET PUT)を行う関数で、ver.1.5でsuccess時のcallback関数に XMLHttpRequestが追加されています。この為、$.ajax()は次のように書くことができます。
function ajax_download(file_name){ $.ajax({ type: "GET", async: true, cache: false, url: file_name, //data: {key_a:val_a, key_b:val_b}, success: function(data, text_status, xhr){ //text_status = success //xhr = XMLHttpRequest alert(' text_status='+text_status + ' xhr.status='+xhr.status + ' xhr.statusText='+xhr.statusText); }, error: function(xhr, text_status, err_thrown){ //xhr = XMLHttpRequest //text_status = {timeout, error, abort, parsererror} //err_thrown = 例)Internal Server Error } }); }
最初はリダイレクトのレスポンスが返ってきた時にXMLHttpRequestのgetResponseHeader()等を使ってリダイレクト先を再取得する必要があると思っていました... しかし、サーバ側で「200 OK」「304 Not Modified」「302 Found(redirect)」を返しても、success callbackは「text_status=success , xhr.status=200 , xhr.statusText=OK」を受け取っています。
jQuery.ajax()のsuccess時に返されるXMLHttpRequestのユースケースって何だろう?