2013-03-13 2 views
7

У меня есть глобальный обработчик ajaxComplete:ajaxComplete, XMLHttpRequest не определен

$('body').ajaxComplete(function (event, request, settings) {   
     if (request.getResponseHeader('REQUIRES_AUTH') === '1') { 
      alert("unauthorized");     
     }; 
    }); 

Проблема в том, что request всегда неопределенными, заполняется только event.
Можете ли вы объяснить мне, почему?

Пример запроса Ajax:

$.ajax({ 
     cache: false, 
     data: "GET", 
     url: url, 
     success: function (content) {   
      $('#modal').html(content); 
      $('#modal').modal();   
     } 
    }); 

UPDATE: Из API Документов (Благодаря Остин Mullins):
По JQuery 1.8, однако, .ajaxComplete() метод должен только прилагаться к документу.

У меня изменить свой код к этому:

$(document).ajaxComplete(function (event, request, settings) {    
     if (request.getResponseHeader('REQUIRES_AUTH') === '1') { 
      alert("unauthorized");    
     }; 
    }); 

Но теперь я получаю ошибку:

TypeError: document.createDocumentFragment is not a function  
safeFrag = document.createDocumentFragment(); (jquery-1.9.0.js (line 5800)) 

браузер Firefox 19.0.2

РЕШЕНИЕ: проблема была в версии JQuery 1.9.0. Я обновил до 1.9.1, и ошибка исчезла. Благодаря Воозу.

+0

Из [API docs] (http://api.jquery.com/ajaxComplete/):> Примечание. Однако с jQuery 1.8 метод .ajaxComplete() должен быть присоединен только к документу. –

+0

@AustinMullins: У меня есть изменения в документе, но теперь я получаю ошибку 'TypeError: document.createDocumentFragment не является функцией' – user348173

+0

Как вы ее изменили? Он должен быть '$ (document) .ajaxComplete()'. –

ответ

2

Последующие изменения, похоже, вы используете jQuery 1.9.0. Было несколько AJAX-related bugfixes in jQuery 1.9.1. Попробуйте использовать последнюю версию jQuery.