Jump To …


Copyright 2012-2014 The Apache Software Foundation

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at


Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


Exports a single function, that invokes t5/core/dom:ajaxRequest() with the provided url and a modified version of the options.

  • options.method - "post", "get", etc., default: "post".
  • options.contentType - request content, defaults to "application/x-www-form-urlencoded"
  • options.data - optional, additional key/value pairs (for the default content type)
  • options.success - handler to invoke on success. Passed the ResponseWrapper object. Default does nothing.
  • options.failure - handler to invoke on failure (server responds with a non-2xx code). Passed the response. Default will throw the exception
  • options.exception - handler to invoke when an exception occurs (often means the server is unavailable). Passed the exception. Default will generate an exception message and throw an Error. Note: not really supported under jQuery, a hold-over from Prototype.
  • options.complete - handler to invoke after success, falure, or exception. The handler is passed no parameters.

It wraps (or provides) success, exception, and failure handlers, extended to handle a partial page render response (for success), or properly log a server-side failure or client-side exception, including using the t5/core/exception-frame module to display a server-side processing exception.

define ["./pageinit", "./dom", "./exception-frame", "./console", "underscore"],
  (pageinit, dom, exceptionframe, console, _) ->
    (url, options) ->

      complete = ->
        if options.complete


      newOptions = _.extend {}, options,

Logs the exception to the console before passing it to the provided exception handler or throwing the exception.

        exception: (exception) ->
          console.error "Request to #{url} failed with #{exception}"

          if options.exception
            options.exception exception
            throw exception



        failure: (response, failureMessage) ->
          raw = response.header "X-Tapestry-ErrorMessage"
          unless _.isEmpty raw
            message = window.unescape raw
            console.error "Request to #{url} failed with '#{message}'."

            contentType = response.header "content-type"

            isHTML = contentType and (contentType.split(';')[0] is "text/html")

            if isHTML
              exceptionframe response.text
            console.error failureMessage

          options.failure and options.failure(response)



        success: (response) ->
          pageinit.handlePartialPageRenderResponse response, options.success



      dom.ajaxRequest url, newOptions