2014-04-30 13 views
12

ho impostare alcune intestazioni personalizzate utilizzandoeliminazione di specifici intestazioni di richiesta impostati nel jQuery.ajaxSetup

$.ajaxSetup({ 
    headers : { 
     'x-custom' : 'value' 
    } 
}); 

Si aggiungerà x-custom intestazione per tutte le richieste Ajax. Ma voglio alcune richieste specifiche per NON contenere questa intestazione.

ho provato questo, cancellare colpo di testa da ajaxSettings prima chiamata AJAX e aggiungerlo indietro quando il suo completamento

delete $.ajaxSettings.headers["x-custom"]; 

$.ajax({ 
    ... 
    "success": function (data) { 
     $.ajaxSettings.headers["x-custom"] = 'value'; 
     ... 
    } 
}); 

Ma sento che questo non è il modo corretto, come la richiesta che ha sparato prima di terminare la chiamata sarà non ottenere quell'intestazione. Cos'altro posso fare per favore suggerire.

Devo aggiungere l'intestazione nella riga successiva dopo $.ajax invece di richiamarla?

+1

un approccio più corretto potrebbe essere 'delete $ .ajaxSettings.headers [" x-custom "]; $ .ajax (...); $ .ajaxSettings.headers ["x-custom"] = 'valore'; ' –

+0

Sì, l'ho fatto in questo modo. Volevo solo scoprire se ci sono altri modi migliori di farlo. Grazie. –

+0

'cancella $ .ajaxSettings.headers [" x-custom "];' ha fatto il trucco per me. Lo sto usando ora. –

risposta

11

Poiché questa domanda non ha alcuna risposta che può essere contrassegnata come accettata. Sto postando la soluzione.

Sembra aggiungere nuovamente l'intestazione immediatamente dopo la chiamata AJAX avrebbe senso. In questo modo non aspetteremo la richiamata di successo e quindi l'aggiungeremo.

delete $.ajaxSettings.headers["x-custom"]; // Remove header before call 

$.ajax({ 
    ... 
    "success": function (data) { 
     ... 
    } 
}); 

$.ajaxSettings.headers["x-custom"] = 'value'; // Add it back immediately 
0

È possibile aggiungere una funzione ajaxComplete. Correrà dopo tutte le tue richieste Ajax e farà tutto ciò che desideri.
Qualcosa di simile,

$(document).ajaxComplete(function(event, xhr, settings) { 
     // Add the headers again. 
     $.ajaxSetup({ 
      headers : { 
       "x-custom" : "value" 
      } 
     }); 
    } 
}); 

È possibile trovare la documentazione here.
Inoltre, a partire da jQuery 1.8, il metodo .ajaxComplete() deve essere collegato solo al documento.

+0

Questo sarebbe sbagliato, è lo stesso che aggiungere quelle intestazioni indietro nel callback, che non è corretto. Volevo solo una richiesta specifica per non avere quelle intestazioni. Quindi sembra che riaggiungerlo immediatamente è la migliore scommessa. –

Problemi correlati