2013-03-13 17 views
7

Ho un ajaxComplete gestore globale:ajaxComplete, XMLHttpRequest non è definito

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

Il problema in quanto il request sempre indefinita, è solo event pieno.
Mi puoi spiegare perché?

Esempio di richiesta AJAX:

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

UPDATE: Dalla documentazione API (Grazie a Austin Mullins):
Al jQuery 1.8, tuttavia, il .ajaxComplete() metodo solo dovrebbe essere allegato al documento

devo cambiare il mio codice a questo:

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

Ma ora ottengo l'errore:

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

browser è Firefox 19.0.2

SOLUZIONE: Il il problema era nella versione 1.9.0 di Jquery. Ho aggiornato a 1.9.1 e l'errore è andato. Grazie a Boaz.

+0

Da [docs API] (http://api.jquery.com/ajaxComplete/):> Nota: A partire da jQuery 1.8, tuttavia, il metodo .ajaxComplete() deve essere collegato al documento. –

+0

@AustinMullins: ho cambiato documento, ma ora ho l'errore 'TypeError: document.createDocumentFragment non è una funzione ' – user348173

+0

Come l'hai modificato? Dovrebbe essere '$ (document) .ajaxComplete()'. –

risposta