jQuery.ajax()
に基づいてAJAXスクリプトを作成していますが、ロードしようとしているリンクがhtmlページであるかどうかチェックする必要があります。 swf、image、またはzipのようなものです。だから私は何とかcontent-typeヘッダーをチェックして、コンテンツを取得するか(htmlの場合)、ajax呼び出しをスローしてwindow.location = theUrl
を実行する必要があるかどうかを判断する必要があります。私が望まないのは、100MBのzipファイルであることを知るためにファイル全体を取得することです。jQuery AJAXはヘッダーのみを取得し、内容を取得するには湿度を決定します
依然として進行中にリクエストを一時停止(または中止)する方法はありますか? HEAD
呼び出しはオプションではありません。これは、毎回サーバーに2つの要求を行う必要があるためです。
setTimeout
と低レベルのxhr機能で何らかの種類のハッキングがありますか?
ありがとうございます! :)
EDIT:要求が完了する前にxhrからxhrのヘッダーを取得しようとしましたが、すべてのデータが取得されるまでデータが入力されていないようです。
EDIT 2:これは、順番に私は、1を述べた2、3、4与えたと私はコンテンツタイプを得ることができ
var xhrr = new window.XMLHttpRequest();
$.ajaxSetup({
xhr: function() { return xhrr }
});
...
$.ajax(....);
var theirfunc = xhrr.onreadystatechange;
xhrr.onreadystatechange = function() {
console.log('xhr state: ', xhrr.readyState);
theirfunc();
};
:私はonreadystatechangeにするために自分自身をバインドするjQueryのものを中心に自分の道をハッキング正常に中断します。私はまだjquery自体がXMLHttpRequestオブジェクトを作成するときにうまくいかない理由を調べています。 ajaxSetupの部分をスキップしてvar xhrr = $.ajax(...)
を取得すると、同じ方法でバインドできなくなります。では、私のxhrはjqueryとどう違うのですか?私は彼らが次のようにそれをするのを見る:
function createStandardXHR() {
try {
return new window.XMLHttpRequest();
} catch(e) {}
}
だから違いはありませんか?
編集3:それを見つけました! jquery 1.6はプロパティの数が少ない偽のxhrオブジェクトを返し、onreadystatechange
はその1つではありません。
なぜHEADないオプションがありますか?これはまさにそのためのものであり、HEAD要求のコストは何もない横にあるべきです。人々がその機能のすべてを使い始めるならば、HTTPは素晴らしいプロトコルであり、ウェブはより良い場所になるでしょう。 – Daff
私はこれ以上のリクエストをしたくありません。たぶん私はそれを行う別の方法を見つけることができない場合... – stormbreaker