Я делаю сценарий Ajax на основе jQuery.ajax () и пришел к точке, когда я должен каким-то образом проверить, является ли ссылка, которую я пытаюсь загрузить, является HTML-страницей или что-то другое, похожее на SWF, изображение или Zip. ajax вызовет и сделайте window.location = theurl . Что я не хочу, чтобы получить весь файл, чтобы узнать, что это 100 -МБ zip -файл. Вызов Head не является вариантом, потому что таким образом мне пришлось бы каждый раз делать 2 запроса на сервер. Извлечено.
Код: Выделить всё
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();
};
< /code>
Так что это дало мне штаты 1, 2, 3, 4 в порядке, и я мог бы успешно получить контент-тип и прервать. Я все еще изучаю, почему это не сработает, когда сам jquery создает объект Xmlhttprequest. Если я пропущу часть AjaxSetup и получу var xhrr = $ .ajax (...)
, тогда свяжитесь так же, как и не сработает. Так как же мой XHR отличается от jquerys? Я вижу, что они делают это так: < /p>
Код: Выделить всё
function createStandardXHR() {
try {
return new window.XMLHttpRequest();
} catch( e ) {}
}
Так что это не должно иметь значения? jquery 1.6 возвращает фальшивый объект XHR с небольшим количеством свойств, а OnreadyStateChange - это не один из них.
Подробнее здесь:
https://stackoverflow.com/questions/669 ... he-content