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

  1. If the abort is intentional, this error is expected — handle it via settings.onAbort callback instead of relying on the console message.
  2. Ensure your beforeSend callback returns a settings object (modified or unmodified) when you want the request to proceed.
  3. 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

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


AI-assisted analysis of Semantic-Org/Semantic-UI@597843ab84 (2026-08-13). Data as JSON: /api/errors/f865e5ffd75bb2ad. Report an issue: GitHub.