Semantic-Org/Semantic-UI · warning
The before send function has aborted the request
Error message
The before send function has aborted the request
What it means
This error is logged by Semantic UI's API module when the user-provided beforeSend callback (settings.beforeSend) returns exactly false, which the module interprets as an intentional abort signal. The query() function at api.js:201-208 calls module.get.settings() which invokes settings.beforeSend.call(context, settings); if that returns false, module.error(error.beforeSend) fires and the request is cancelled before it is sent.
Source
Thrown at src/definitions/behaviors/api.js:1127
onSuccess : function(response, $module) {},
// request finished without aborting
onComplete : function(response, $module) {},
// failed JSON success test
onFailure : function(response, $module) {},
// server error
onError : function(errorMessage, $module) {},
// request aborted
onAbort : function(errorMessage, $module) {},
successTest : false,
// errors
error : {
beforeSend : 'The before send function has aborted the request',
error : 'There was an error with your request',
exitConditions : 'API Request Aborted. Exit conditions met',
JSONParse : 'JSON could not be parsed during error handling',
legacyParameters : 'You are using legacy API success callback names',
method : 'The method you called is not defined',
missingAction : 'API action used but no url was defined',
missingSerialize : 'jquery-serialize-object is required to add form data to an existing data object',
missingURL : 'No URL specified for api event',
noReturnedValue : 'The beforeSend callback must return a settings object, beforeSend ignored.',
noStorage : 'Caching responses locally requires session storage',
parseError : 'There was an error parsing your request',
requiredParameter : 'Missing a required URL parameter: ',
statusMessage : 'Server gave an error: ',
timeout : 'Your request timed out'
},
regExp : {
required : /\{\$*[A-z0-9]+\}/g,View on GitHub (pinned to 597843ab84)
Solutions
- If the abort is intentional, this error is expected — handle it via settings.onAbort callback instead of relying on the console message.
- Ensure your beforeSend callback returns a settings object (modified or unmodified) when you want the request to proceed.
- If using beforeXHR for jQuery-level interception, do not confuse it with settings.beforeSend — they serve different layers.
Example fix
// before
$('.api-element')
.api({
beforeSend: function(settings) {
if (!isValid()) return false; // aborts, logs error
return settings;
}
});
// after (handle abort gracefully)
$('.api-element')
.api({
beforeSend: function(settings) {
if (!isValid()) { return false; }
return settings;
},
onAbort: function(errorMessage) { console.warn('Aborted:', errorMessage); }
}); Defensive patterns
Strategy: validation
Validate before calling
// Validate beforeSend return value before relying on it
$('.el').api({
beforeSend: function(settings) {
if (!shouldProceed(settings)) {
// Intentional abort — handle via onAbort
return false;
}
// Always return a settings object for normal flow
return settings;
},
onAbort: function() { console.log('Request was intentionally aborted.'); }
}); Type guard
// Verify beforeSend returns a valid settings object or false
function validateBeforeSendResult(result) {
return result === false || ($.isPlainObject(result));
} Try / catch
// Wrap API calls that may abort in a promise chain
try {
$('.el').api('query');
} catch (e) {
// module.error logs to console; no exception is thrown
// Handle programmatically if needed
} Prevention
- Always return the settings object from beforeSend when you want the request to proceed.
- Use the onAbort callback to handle intentional aborts gracefully.
- Do not confuse settings.beforeSend (API-level) with settings.beforeXHR (jQuery-level).
When it happens
Trigger: Configuring settings.beforeSend as a function that returns false under certain conditions (e.g., validation failure, duplicate prevention). The callback is expected to return a settings object or undefined (to use defaults); returning false is the documented abort mechanism.
Common situations: A beforeSend callback with a code path that unintentionally returns false (missing return statement or early-exit guard). Using beforeSend for pre-request validation that rejects the request. Confusion between beforeXHR (jQuery-level) and beforeSend (API-level) callbacks.
Related errors
- There was an error with your request
- API Request Aborted. Exit conditions met
- No URL specified for api event
- The beforeSend callback must return a settings object, befor
- There was an error parsing your request
AI-assisted analysis of Semantic-Org/Semantic-UI@597843ab84 (2026-08-13).
Data as JSON: /api/errors/f865e5ffd75bb2ad.
Report an issue: GitHub.