Вход Регистрация
Файл: Main Website Files/assets/bower_components/jquery/src/ajax.js
Строк: 787
<?php
define
([
    
"./core",
    
"./var/rnotwhite",
    
"./ajax/var/nonce",
    
"./ajax/var/rquery",
    
"./core/init",
    
"./ajax/parseJSON",
    
"./ajax/parseXML",
    
"./deferred"
], function( jQueryrnotwhitenoncerquery ) {

var
    
rhash = /#.*$/,
    
rts = /([?&])_=[^&]*/,
    
rheaders = /^(.*?):[ t]*([^rn]*)$/mg,
    
// #7653, #8125, #8152: local protocol detection
    
rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
    
rnoContent = /^(?:GET|HEAD)$/,
    
rprotocol = /^///,
    
rurl = /^([w.+-]+:)(?://(?:[^/?#]*@|)([^/?#:]*)(?::(d+)|)|)/,

    /* Prefilters
     * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
     * 2) These are called:
     *    - BEFORE asking for a transport
     *    - AFTER param serialization (s.data is a string if s.processData is true)
     * 3) key is the dataType
     * 4) the catchall symbol "*" can be used
     * 5) execution will start with transport dataType and THEN continue down to "*" if needed
     */
    
prefilters = {},

    
/* Transports bindings
     * 1) key is the dataType
     * 2) the catchall symbol "*" can be used
     * 3) selection will start with transport dataType and THEN go to "*" if needed
     */
    
transports = {},

    
// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
    
allTypes "*/".concat"*" ),

    
// Document location
    
ajaxLocation window.location.href,

    
// Segment location into parts
    
ajaxLocParts rurl.execajaxLocation.toLowerCase() ) || [];

// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
function addToPrefiltersOrTransportsstructure ) {

    
// dataTypeExpression is optional and defaults to "*"
    
return function( dataTypeExpressionfunc ) {

        if ( 
typeof dataTypeExpression !== "string" ) {
            
func dataTypeExpression;
            
dataTypeExpression "*";
        }

        var 
dataType,
            
0,
            
dataTypes dataTypeExpression.toLowerCase().matchrnotwhite ) || [];

        if ( 
jQuery.isFunctionfunc ) ) {
            
// For each dataType in the dataTypeExpression
            
while ( (dataType dataTypes[i++]) ) {
                
// Prepend if requested
                
if ( dataType[0] === "+" ) {
                    
dataType dataType.slice) || "*";
                    (
structuredataType ] = structuredataType ] || []).unshiftfunc );

                
// Otherwise append
                
} else {
                    (
structuredataType ] = structuredataType ] || []).pushfunc );
                }
            }
        }
    };
}

// Base inspection function for prefilters and transports
function inspectPrefiltersOrTransportsstructureoptionsoriginalOptionsjqXHR ) {

    var 
inspected = {},
        
seekingTransport = ( structure === transports );

    function 
inspectdataType ) {
        var 
selected;
        
inspecteddataType ] = true;
        
jQuery.eachstructuredataType ] || [], function( _prefilterOrFactory ) {
            var 
dataTypeOrTransport prefilterOrFactoryoptionsoriginalOptionsjqXHR );
            if ( 
typeof dataTypeOrTransport === "string" && !seekingTransport && !inspecteddataTypeOrTransport ] ) {
                
options.dataTypes.unshiftdataTypeOrTransport );
                
inspectdataTypeOrTransport );
                return 
false;
            } else if ( 
seekingTransport ) {
                return !( 
selected dataTypeOrTransport );
            }
        });
        return 
selected;
    }

    return 
inspectoptions.dataTypes] ) || !inspected"*" ] && inspect"*" );
}

// A special extend for ajax options
// that takes "flat" options (not to be deep extended)
// Fixes #9887
function ajaxExtendtargetsrc ) {
    var 
keydeep,
        
flatOptions jQuery.ajaxSettings.flatOptions || {};

    for ( 
key in src ) {
        if ( 
srckey ] !== undefined ) {
            ( 
flatOptionskey ] ? target : ( deep || (deep = {}) ) )[ key ] = srckey ];
        }
    }
    if ( 
deep ) {
        
jQuery.extendtruetargetdeep );
    }

    return 
target;
}

/* Handles responses to an ajax request:
 * - finds the right dataType (mediates between content-type and expected dataType)
 * - returns the corresponding response
 */
function ajaxHandleResponsessjqXHRresponses ) {

    var 
cttypefinalDataTypefirstDataType,
        
contents s.contents,
        
dataTypes s.dataTypes;

    
// Remove auto dataType and get content-type in the process
    
while ( dataTypes] === "*" ) {
        
dataTypes.shift();
        if ( 
ct === undefined ) {
            
ct s.mimeType || jqXHR.getResponseHeader("Content-Type");
        }
    }

    
// Check if we're dealing with a known content-type
    
if ( ct ) {
        for ( 
type in contents ) {
            if ( 
contentstype ] && contentstype ].testct ) ) {
                
dataTypes.unshifttype );
                break;
            }
        }
    }

    
// Check to see if we have a response for the expected dataType
    
if ( dataTypesin responses ) {
        
finalDataType dataTypes];
    } else {
        
// Try convertible dataTypes
        
for ( type in responses ) {
            if ( !
dataTypes] || s.converterstype " " dataTypes[0] ] ) {
                
finalDataType type;
                break;
            }
            if ( !
firstDataType ) {
                
firstDataType type;
            }
        }
        
// Or just use first one
        
finalDataType finalDataType || firstDataType;
    }

    
// If we found a dataType
    // We add the dataType to the list if needed
    // and return the corresponding response
    
if ( finalDataType ) {
        if ( 
finalDataType !== dataTypes] ) {
            
dataTypes.unshiftfinalDataType );
        }
        return 
responsesfinalDataType ];
    }
}

/* Chain conversions given the request and the original response
 * Also sets the responseXXX fields on the jqXHR instance
 */
function ajaxConvertsresponsejqXHRisSuccess ) {
    var 
conv2currentconvtmpprev,
        
converters = {},
        
// Work with a copy of dataTypes in case we need to modify it for conversion
        
dataTypes s.dataTypes.slice();

    
// Create converters map with lowercased keys
    
if ( dataTypes] ) {
        for ( 
conv in s.converters ) {
            
convertersconv.toLowerCase() ] = s.convertersconv ];
        }
    }

    
current dataTypes.shift();

    
// Convert to each sequential dataType
    
while ( current ) {

        if ( 
s.responseFieldscurrent ] ) {
            
jqXHRs.responseFieldscurrent ] ] = response;
        }

        
// Apply the dataFilter if provided
        
if ( !prev && isSuccess && s.dataFilter ) {
            
response s.dataFilterresponses.dataType );
        }

        
prev current;
        
current dataTypes.shift();

        if ( 
current ) {

        
// There's only work to do if current dataType is non-auto
            
if ( current === "*" ) {

                
current prev;

            
// Convert response if prev dataType is non-auto and differs from current
            
} else if ( prev !== "*" && prev !== current ) {

                
// Seek a direct converter
                
conv convertersprev " " current ] || converters"* " current ];

                
// If none found, seek a pair
                
if ( !conv ) {
                    for ( 
conv2 in converters ) {

                        
// If conv2 outputs current
                        
tmp conv2.split" " );
                        if ( 
tmp] === current ) {

                            
// If prev can be converted to accepted input
                            
conv convertersprev " " tmp] ] ||
                                
converters"* " tmp] ];
                            if ( 
conv ) {
                                
// Condense equivalence converters
                                
if ( conv === true ) {
                                    
conv convertersconv2 ];

                                
// Otherwise, insert the intermediate dataType
                                
} else if ( convertersconv2 ] !== true ) {
                                    
current tmp];
                                    
dataTypes.unshifttmp] );
                                }
                                break;
                            }
                        }
                    }
                }

                
// Apply converter (if not an equivalence)
                
if ( conv !== true ) {

                    
// Unless errors are allowed to bubble, catch and return them
                    
if ( conv && s"throws" ] ) {
                        
response convresponse );
                    } else {
                        try {
                            
response convresponse );
                        } catch ( 
) {
                            return { 
state"parsererror"errorconv "No conversion from " prev " to " current };
                        }
                    }
                }
            }
        }
    }

    return { 
state"success"dataresponse };
}

jQuery.extend({

    
// Counter for holding the number of active queries
    
active0,

    
// Last-Modified header cache for next request
    
lastModified: {},
    
etag: {},

    
ajaxSettings: {
        
urlajaxLocation,
        
type"GET",
        
isLocalrlocalProtocol.testajaxLocParts] ),
        global: 
true,
        
processDatatrue,
        
asynctrue,
        
contentType"application/x-www-form-urlencoded; charset=UTF-8",
        
/*
        timeout: 0,
        data: null,
        dataType: null,
        username: null,
        password: null,
        cache: null,
        throws: false,
        traditional: false,
        headers: {},
        */

        
accepts: {
            
"*"allTypes,
            
text"text/plain",
            
html"text/html",
            
xml"application/xml, text/xml",
            
json"application/json, text/javascript"
        
},

        
contents: {
            
xml: /xml/,
            
html: /html/,
            
json: /json/
        },

        
responseFields: {
            
xml"responseXML",
            
text"responseText",
            
json"responseJSON"
        
},

        
// Data converters
        // Keys separate source (or catchall "*") and destination types with a single space
        
converters: {

            
// Convert anything to text
            
"* text"String,

            
// Text to html (true = no transformation)
            
"text html"true,

            
// Evaluate text as a json expression
            
"text json"jQuery.parseJSON,

            
// Parse text as xml
            
"text xml"jQuery.parseXML
        
},

        
// For options that shouldn't be deep extended:
        // you can add your own custom options here if
        // and when you create one that shouldn't be
        // deep extended (see ajaxExtend)
        
flatOptions: {
            
urltrue,
            
contexttrue
        
}
    },

    
// Creates a full fledged settings object into target
    // with both ajaxSettings and settings fields.
    // If target is omitted, writes into ajaxSettings.
    
ajaxSetup: function( targetsettings ) {
        return 
settings ?

            
// Building a settings object
            
ajaxExtendajaxExtendtargetjQuery.ajaxSettings ), settings ) :

            
// Extending ajaxSettings
            
ajaxExtendjQuery.ajaxSettingstarget );
    },

    
ajaxPrefilteraddToPrefiltersOrTransportsprefilters ),
    
ajaxTransportaddToPrefiltersOrTransportstransports ),

    
// Main method
    
ajax: function( urloptions ) {

        
// If url is an object, simulate pre-1.5 signature
        
if ( typeof url === "object" ) {
            
options url;
            
url undefined;
        }

        
// Force options to be an object
        
options options || {};

        var 
transport,
            
// URL without anti-cache param
            
cacheURL,
            
// Response headers
            
responseHeadersString,
            
responseHeaders,
            
// timeout handle
            
timeoutTimer,
            
// Cross-domain detection vars
            
parts,
            
// To know if global events are to be dispatched
            
fireGlobals,
            
// Loop variable
            
i,
            
// Create the final options object
            
jQuery.ajaxSetup( {}, options ),
            
// Callbacks context
            
callbackContext s.context || s,
            
// Context for global events is callbackContext if it is a DOM node or jQuery collection
            
globalEventContext s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
                
jQuerycallbackContext ) :
                
jQuery.event,
            
// Deferreds
            
deferred jQuery.Deferred(),
            
completeDeferred jQuery.Callbacks("once memory"),
            
// Status-dependent callbacks
            
statusCode s.statusCode || {},
            
// Headers (they are sent all at once)
            
requestHeaders = {},
            
requestHeadersNames = {},
            
// The jqXHR state
            
state 0,
            
// Default abort message
            
strAbort "canceled",
            
// Fake xhr
            
jqXHR = {
                
readyState0,

                
// Builds headers hashtable if needed
                
getResponseHeader: function( key ) {
                    var 
match;
                    if ( 
state === ) {
                        if ( !
responseHeaders ) {
                            
responseHeaders = {};
                            while ( (
match rheaders.execresponseHeadersString )) ) {
                                
responseHeadersmatch[1].toLowerCase() ] = match];
                            }
                        }
                        
match responseHeaderskey.toLowerCase() ];
                    }
                    return 
match == null null match;
                },

                
// Raw string
                
getAllResponseHeaders: function() {
                    return 
state === responseHeadersString null;
                },

                
// Caches the header
                
setRequestHeader: function( namevalue ) {
                    var 
lname name.toLowerCase();
                    if ( !
state ) {
                        
name requestHeadersNameslname ] = requestHeadersNameslname ] || name;
                        
requestHeadersname ] = value;
                    }
                    return 
this;
                },

                
// Overrides response content-type header
                
overrideMimeType: function( type ) {
                    if ( !
state ) {
                        
s.mimeType type;
                    }
                    return 
this;
                },

                
// Status-dependent callbacks
                
statusCode: function( map ) {
                    var 
code;
                    if ( 
map ) {
                        if ( 
state ) {
                            for ( 
code in map ) {
                                
// Lazy-add the new callback in a way that preserves old ones
                                
statusCodecode ] = [ statusCodecode ], mapcode ] ];
                            }
                        } else {
                            
// Execute the appropriate callbacks
                            
jqXHR.alwaysmapjqXHR.status ] );
                        }
                    }
                    return 
this;
                },

                
// Cancel the request
                
abort: function( statusText ) {
                    var 
finalText statusText || strAbort;
                    if ( 
transport ) {
                        
transport.abortfinalText );
                    }
                    
done0finalText );
                    return 
this;
                }
            };

        
// Attach deferreds
        
deferred.promisejqXHR ).complete completeDeferred.add;
        
jqXHR.success jqXHR.done;
        
jqXHR.error jqXHR.fail;

        
// Remove hash character (#7531: and string promotion)
        // Add protocol if not provided (prefilters might expect it)
        // Handle falsy url in the settings object (#10093: consistency with old signature)
        // We also use the url parameter if available
        
s.url = ( ( url || s.url || ajaxLocation ) + "" ).replacerhash"" )
            .
replacerprotocolajaxLocParts] + "//" );

        
// Alias method option to type as per ticket #12004
        
s.type options.method || options.type || s.method || s.type;

        
// Extract dataTypes list
        
s.dataTypes jQuery.trims.dataType || "*" ).toLowerCase().matchrnotwhite ) || [ "" ];

        
// A cross-domain request is in order when we have a protocol:host:port mismatch
        
if ( s.crossDomain == null ) {
            
parts rurl.execs.url.toLowerCase() );
            
s.crossDomain = !!( parts &&
                ( 
parts] !== ajaxLocParts] || parts] !== ajaxLocParts] ||
                    ( 
parts] || ( parts] === "http:" "80" "443" ) ) !==
                        ( 
ajaxLocParts] || ( ajaxLocParts] === "http:" "80" "443" ) ) )
            );
        }

        
// Convert data if not already a string
        
if ( s.data && s.processData && typeof s.data !== "string" ) {
            
s.data jQuery.params.datas.traditional );
        }

        
// Apply prefilters
        
inspectPrefiltersOrTransportsprefilterssoptionsjqXHR );

        
// If request was aborted inside a prefilter, stop there
        
if ( state === ) {
            return 
jqXHR;
        }

        
// We can fire global events as of now if asked to
        // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
        
fireGlobals jQuery.event && s.global;

        
// Watch for a new set of requests
        
if ( fireGlobals && jQuery.active++ === ) {
            
jQuery.event.trigger("ajaxStart");
        }

        
// Uppercase the type
        
s.type s.type.toUpperCase();

        
// Determine if request has content
        
s.hasContent = !rnoContent.tests.type );

        
// Save the URL in case we're toying with the If-Modified-Since
        // and/or If-None-Match header later on
        
cacheURL s.url;

        
// More options handling for requests with no content
        
if ( !s.hasContent ) {

            
// If data is available, append data to url
            
if ( s.data ) {
                
cacheURL = ( s.url += ( rquery.testcacheURL ) ? "&" "?" ) + s.data );
                
// #9682: remove data so that it's not used in an eventual retry
                
delete s.data;
            }

            
// Add anti-cache in url if needed
            
if ( s.cache === false ) {
                
s.url rts.testcacheURL ) ?

                    
// If there is already a '_' parameter, set its value
                    
cacheURL.replacerts"$1_=" nonce++ ) :

                    
// Otherwise add one to the end
                    
cacheURL + ( rquery.testcacheURL ) ? "&" "?" ) + "_=" nonce++;
            }
        }

        
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
        
if ( s.ifModified ) {
            if ( 
jQuery.lastModifiedcacheURL ] ) {
                
jqXHR.setRequestHeader"If-Modified-Since"jQuery.lastModifiedcacheURL ] );
            }
            if ( 
jQuery.etagcacheURL ] ) {
                
jqXHR.setRequestHeader"If-None-Match"jQuery.etagcacheURL ] );
            }
        }

        
// Set the correct header, if data is being sent
        
if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
            
jqXHR.setRequestHeader"Content-Type"s.contentType );
        }

        
// Set the Accepts header for the server, depending on the dataType
        
jqXHR.setRequestHeader(
            
"Accept",
            
s.dataTypes] && s.acceptss.dataTypes[0] ] ?
                
s.acceptss.dataTypes[0] ] + ( s.dataTypes] !== "*" ", " allTypes "; q=0.01" "" ) :
                
s.accepts"*" ]
        );

        
// Check for headers option
        
for ( i in s.headers ) {
            
jqXHR.setRequestHeaderis.headers] );
        }

        
// Allow custom headers/mimetypes and early abort
        
if ( s.beforeSend && ( s.beforeSend.callcallbackContextjqXHR) === false || state === ) ) {
            
// Abort if not done already and return
            
return jqXHR.abort();
        }

        
// Aborting is no longer a cancellation
        
strAbort "abort";

        
// Install callbacks on deferreds
        
for ( i in success1error1complete} ) {
            
jqXHR]( s] );
        }

        
// Get transport
        
transport inspectPrefiltersOrTransportstransportssoptionsjqXHR );

        
// If no transport, we auto-abort
        
if ( !transport ) {
            
done( -1"No Transport" );
        } else {
            
jqXHR.readyState 1;

            
// Send global event
            
if ( fireGlobals ) {
                
globalEventContext.trigger"ajaxSend", [ jqXHR] );
            }
            
// Timeout
            
if ( s.async && s.timeout ) {
                
timeoutTimer setTimeout(function() {
                    
jqXHR.abort("timeout");
                }, 
s.timeout );
            }

            try {
                
state 1;
                
transport.sendrequestHeadersdone );
            } catch ( 
) {
                
// Propagate exception as error if not done
                
if ( state ) {
                    
done( -1);
                
// Simply rethrow otherwise
                
} else {
                    throw 
e;
                }
            }
        }

        
// Callback for when everything is done
        
function donestatusnativeStatusTextresponsesheaders ) {
            var 
isSuccesssuccesserrorresponsemodified,
                
statusText nativeStatusText;

            
// Called once
            
if ( state === ) {
                return;
            }

            
// State is "done" now
            
state 2;

            
// Clear timeout if it exists
            
if ( timeoutTimer ) {
                
clearTimeouttimeoutTimer );
            }

            
// Dereference transport for early garbage collection
            // (no matter how long the jqXHR object will be used)
            
transport undefined;

            
// Cache response headers
            
responseHeadersString headers || "";

            
// Set readyState
            
jqXHR.readyState status 0;

            
// Determine if successful
            
isSuccess status >= 200 && status 300 || status === 304;

            
// Get response data
            
if ( responses ) {
                
response ajaxHandleResponsessjqXHRresponses );
            }

            
// Convert no matter what (that way responseXXX fields are always set)
            
response ajaxConvertsresponsejqXHRisSuccess );

            
// If successful, handle type chaining
            
if ( isSuccess ) {

                
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
                
if ( s.ifModified ) {
                    
modified jqXHR.getResponseHeader("Last-Modified");
                    if ( 
modified ) {
                        
jQuery.lastModifiedcacheURL ] = modified;
                    }
                    
modified jqXHR.getResponseHeader("etag");
                    if ( 
modified ) {
                        
jQuery.etagcacheURL ] = modified;
                    }
                }

                
// if no content
                
if ( status === 204 || s.type === "HEAD" ) {
                    
statusText "nocontent";

                
// if not modified
                
} else if ( status === 304 ) {
                    
statusText "notmodified";

                
// If we have data, let's convert it
                
} else {
                    
statusText response.state;
                    
success response.data;
                    
error response.error;
                    
isSuccess = !error;
                }
            } else {
                
// Extract error from statusText and normalize for non-aborts
                
error statusText;
                if ( 
status || !statusText ) {
                    
statusText "error";
                    if ( 
status ) {
                        
status 0;
                    }
                }
            }

            
// Set data for the fake xhr object
            
jqXHR.status status;
            
jqXHR.statusText = ( nativeStatusText || statusText ) + "";

            
// Success/Error
            
if ( isSuccess ) {
                
deferred.resolveWithcallbackContext, [ successstatusTextjqXHR ] );
            } else {
                
deferred.rejectWithcallbackContext, [ jqXHRstatusTexterror ] );
            }

            
// Status-dependent callbacks
            
jqXHR.statusCodestatusCode );
            
statusCode undefined;

            if ( 
fireGlobals ) {
                
globalEventContext.triggerisSuccess "ajaxSuccess" "ajaxError",
                    [ 
jqXHRsisSuccess success error ] );
            }

            
// Complete
            
completeDeferred.fireWithcallbackContext, [ jqXHRstatusText ] );

            if ( 
fireGlobals ) {
                
globalEventContext.trigger"ajaxComplete", [ jqXHR] );
                
// Handle the global AJAX counter
                
if ( !( --jQuery.active ) ) {
                    
jQuery.event.trigger("ajaxStop");
                }
            }
        }

        return 
jqXHR;
    },

    
getJSON: function( urldatacallback ) {
        return 
jQuery.geturldatacallback"json" );
    },

    
getScript: function( urlcallback ) {
        return 
jQuery.geturlundefinedcallback"script" );
    }
});

jQuery.each( [ "get""post" ], function( imethod ) {
    
jQuerymethod ] = function( urldatacallbacktype ) {
        
// Shift arguments if data argument was omitted
        
if ( jQuery.isFunctiondata ) ) {
            
type type || callback;
            
callback data;
            
data undefined;
        }

        return 
jQuery.ajax({
            
urlurl,
            
typemethod,
            
dataTypetype,
            
datadata,
            
successcallback
        
});
    };
});

return 
jQuery;
});
?>
Онлайн: 1
Реклама