## jQuery.ajaxPrefilter( [dataTypes ], handler )Returns: undefined

Description: Handle custom Ajax options or modify existing options before each request is sent and before they are processed by `$.ajax()`.

- #### version added: 1.5 jQuery.ajaxPrefilter( [dataTypes ], handler )

  - dataTypes
    Type: String
    An optional string containing one or more space-separated dataTypes
  - handler
    Type: Function( PlainObject options, PlainObject originalOptions, jqXHR jqXHR )
    A handler to set default values for future Ajax requests.

A typical prefilter registration using `$.ajaxPrefilter()` looks like this:

1 2 3 |
    $.ajaxPrefilter(function( options, originalOptions, jqXHR ) {  // Modify options, control originalOptions, store jqXHR, etc});

where:

- `options` are the request options
- `originalOptions` are the options as provided to the `$.ajax()` method, unmodified and, thus, without defaults from `ajaxSettings`
- `jqXHR` is the jqXHR object of the request

Prefilters are a perfect fit when custom options need to be handled. Given the following code, for example, a call to `$.ajax()` would automatically abort a request to the same URL if the custom `abortOnRetry` option is set to `true`:

1 2 3 4 5 6 7 8 9 10 |
    var currentRequests = {}; $.ajaxPrefilter(function( options, originalOptions, jqXHR ) {  if ( options.abortOnRetry ) {    if ( currentRequests[ options.url ] ) {      currentRequests[ options.url ].abort();    }    currentRequests[ options.url ] = jqXHR;  }});

Prefilters can also be used to modify existing options. For example, the following proxies cross-domain requests through https://mydomain.net/proxy/:

1 2 3 4 5 6 |
    $.ajaxPrefilter(function( options ) {  if ( options.crossDomain ) {    options.url = "https://mydomain.net/proxy/" + encodeURIComponent( options.url );    options.crossDomain = false;  }});

If the optional `dataTypes` argument is supplied, the prefilter will be only be applied to requests with the indicated dataTypes. For example, the following only applies the given prefilter to JSON and script requests:

1 2 3 |
    $.ajaxPrefilter( "json script", function( options, originalOptions, jqXHR ) {  // Modify options, control originalOptions, store jqXHR, etc});

The `$.ajaxPrefilter()` method can also redirect a request to another dataType by returning that dataType. For example, the following sets a request as "script" if the URL has some specific properties defined in a custom `isActuallyScript()` function:

1 2 3 4 5 |
    $.ajaxPrefilter(function( options ) {  if ( isActuallyScript( options.url ) ) {    return "script";  }});

This would ensure not only that the request is considered "script" but also that all the prefilters specifically attached to the script dataType would be applied to it.