jQuery API

jQuery.ajax()

jQuery.ajax( url [, settings] ) Returns: jqXHR

Description: Perform an asynchronous HTTP (Ajax) request.

  • version added: 1.5jQuery.ajax( url [, settings] )

    urlA string containing the URL to which the request is sent.

    settingsA set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup(). See jQuery.ajax( settings ) below for a complete list of all settings.

  • version added: 1.0jQuery.ajax( settings )

    settingsA set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup().

    acceptsMap
    Default: depends on DataType

    The content type sent in the request header that tells the server what kind of response it will accept in return. If the accepts setting needs modification, it is recommended to do so once in the $.ajaxSetup() method

    asyncBoolean
    Default: true

    By default, all requests are sent asynchronously (i.e. this is set to true by default). If you need synchronous requests, set this option to false. Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation. Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active.

    beforeSend(jqXHR, settings)Function

    A pre-request callback function that can be used to modify the jqXHR (in jQuery 1.4.x, XMLHTTPRequest) object before it is sent. Use this to set custom headers, etc. The jqXHR and settings maps are passed as arguments. This is an Ajax Event. Returning false in the beforeSend function will cancel the request. As of jQuery 1.5, the beforeSend option will be called regardless of the type of request.

    cacheBoolean
    Default: true, false for dataType 'script' and 'jsonp'

    If set to false, it will force requested pages not to be cached by the browser. Setting cache to false also appends a query string parameter, "_=[TIMESTAMP]", to the URL.

    complete(jqXHR, textStatus)Function, Array

    A function to be called when the request finishes (after success and error callbacks are executed). The function gets passed two arguments: The jqXHR (in jQuery 1.4.x, XMLHTTPRequest) object and a string categorizing the status of the request ("success", "notmodified", "error", "timeout", "abort", or "parsererror"). As of jQuery 1.5, the complete setting can accept an array of functions. Each function will be called in turn. This is an Ajax Event.

    contents(added 1.5)Map

    A map of string/regular-expression pairs that determine how jQuery will parse the response, given its content type.

    contentTypeString
    Default: 'application/x-www-form-urlencoded'

    When sending data to the server, use this content-type. Default is "application/x-www-form-urlencoded", which is fine for most cases. If you explicitly pass in a content-type to $.ajax() then it'll always be sent to the server (even if no data is sent). Data will always be transmitted to the server using UTF-8 charset; you must decode this appropriately on the server side.

    contextObject

    This object will be made the context of all Ajax-related callbacks. By default, the context is an object that represents the ajax settings used in the call ($.ajaxSettings merged with the settings passed to $.ajax). For example specifying a DOM element as the context will make that the context for the complete callback of a request, like so:

    $.ajax({
      url: "test.html",
      context: document.body,
      success: function(){
        $(this).addClass("done");
      }
    });
    converters(added 1.5)Map
    Default: {"* text": window.String, "text html": true, "text json": jQuery.parseJSON, "text xml": jQuery.parseXML}

    A map of dataType-to-dataType converters. Each converter's value is a function that returns the transformed value of the response

    crossDomain(added 1.5)
    Default: false for same-domain requests, true for cross-domain requests

    If you wish to force a crossDomain request (such as JSONP) on the same domain, set the value of crossDomain to true. This allows, for example, server-side redirection to another domain

    dataObject, String

    Data to be sent to the server. It is converted to a query string, if not already a string. It's appended to the url for GET-requests. See processData option to prevent this automatic processing. Object must be Key/Value pairs. If value is an Array, jQuery serializes multiple values with same key based on the value of the traditional setting (described below).

    dataFilter(data, type)Function

    A function to be used to handle the raw response data of XMLHttpRequest.This is a pre-filtering function to sanitize the response. You should return the sanitized data. The function accepts two arguments: The raw data returned from the server and the 'dataType' parameter.

    dataTypeString
    Default: Intelligent Guess (xml, json, script, or html)

    The type of data that you're expecting back from the server. If none is specified, jQuery will try to infer it based on the MIME type of the response (an XML MIME type will yield XML, in 1.4 JSON will yield a JavaScript object, in 1.4 script will execute the script, and anything else will be returned as a string). The available types (and the result passed as the first argument to your success callback) are:

    • "xml": Returns a XML document that can be processed via jQuery.
    • "html": Returns HTML as plain text; included script tags are evaluated when inserted in the DOM.
    • "script": Evaluates the response as JavaScript and returns it as plain text. Disables caching by appending a query string parameter, "_=[TIMESTAMP]", to the URL unless the cache option is set to true. Note: This will turn POSTs into GETs for remote-domain requests.
    • "json": Evaluates the response as JSON and returns a JavaScript object. In jQuery 1.4 the JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown. (See json.org for more information on proper JSON formatting.)
    • "jsonp": Loads in a JSON block using JSONP. Adds an extra "?callback=?" to the end of your URL to specify the callback. Disables caching by appending a query string parameter, "_=[TIMESTAMP]", to the URL unless the cache option is set to true.
    • "text": A plain text string.
    • multiple, space-separated values: As of jQuery 1.5, jQuery can convert a dataType from what it received in the Content-Type header to what you require. For example, if you want a text response to be treated as XML, use "text xml" for the dataType. You can also make a JSONP request, have it received as text, and interpreted by jQuery as XML: "jsonp text xml." Similarly, a shorthand string such as "jsonp xml" will first attempt to convert from jsonp to xml, and, failing that, convert from jsonp to text, and then from text to xml.
    error(jqXHR, textStatus, errorThrown)Function

    A function to be called if the request fails. The function receives three arguments: The jqXHR (in jQuery 1.4.x, XMLHttpRequest) object, a string describing the type of error that occurred and an optional exception object, if one occurred. Possible values for the second argument (besides null) are "timeout", "error", "abort", and "parsererror". When an HTTP error occurs, errorThrown receives the textual portion of the HTTP status, such as "Not Found" or "Internal Server Error." As of jQuery 1.5, the error setting can accept an array of functions. Each function will be called in turn. Note: This handler is not called for cross-domain script and JSONP requests. This is an Ajax Event.

    globalBoolean
    Default: true

    Whether to trigger global Ajax event handlers for this request. The default is true. Set to false to prevent the global handlers like ajaxStart or ajaxStop from being triggered. This can be used to control various Ajax Events.

    headers(added 1.5)Map
    Default: {}

    A map of additional header key/value pairs to send along with the request. This setting is set before the beforeSend function is called; therefore, any values in the headers setting can be overwritten from within the beforeSend function.

    ifModifiedBoolean
    Default: false

    Allow the request to be successful only if the response has changed since the last request. This is done by checking the Last-Modified header. Default value is false, ignoring the header. In jQuery 1.4 this technique also checks the 'etag' specified by the server to catch unmodified data.

    isLocal(added 1.5.1)Boolean
    Default: depends on current location protocol

    Allow the current environment to be recognized as "local," (e.g. the filesystem), even if jQuery does not recognize it as such by default. The following protocols are currently recognized as local: file, *-extension, and widget. If the isLocal setting needs modification, it is recommended to do so once in the $.ajaxSetup() method.

    jsonpString

    Override the callback function name in a jsonp request. This value will be used instead of 'callback' in the 'callback=?' part of the query string in the url. So {jsonp:'onJSONPLoad'} would result in 'onJSONPLoad=?' passed to the server. As of jQuery 1.5, setting the jsonp option to false prevents jQuery from adding the "?callback" string to the URL or attempting to use "=?" for transformation. In this case, you should also explicitly set the jsonpCallback setting. For example, { jsonp: false, jsonpCallback: "callbackName" }

    jsonpCallbackString, Function

    Specify the callback function name for a JSONP request. This value will be used instead of the random name automatically generated by jQuery. It is preferable to let jQuery generate a unique name as it'll make it easier to manage the requests and provide callbacks and error handling. You may want to specify the callback when you want to enable better browser caching of GET requests. As of jQuery 1.5, you can also use a function for this setting, in which case the value of jsonpCallback is set to the return value of that function.

    mimeType(added 1.5.1)String

    A mime type to override the XHR mime type.

    passwordString

    A password to be used in response to an HTTP access authentication request.

    processDataBoolean
    Default: true

    By default, data passed in to the data option as an object (technically, anything other than a string) will be processed and transformed into a query string, fitting to the default content-type "application/x-www-form-urlencoded". If you want to send a DOMDocument, or other non-processed data, set this option to false.

    scriptCharsetString

    Only for requests with "jsonp" or "script" dataType and "GET" type. Forces the request to be interpreted as a certain charset. Only needed for charset differences between the remote and local content.

    statusCode(added 1.5)Map
    Default: {}

    A map of numeric HTTP codes and functions to be called when the response has the corresponding code. For example, the following will alert when the response status is a 404:

    $.ajax({
      statusCode: {
        404: function() {
          alert('page not found');
        }
      }
    });

    If the request is successful, the status code functions take the same parameters as the success callback; if it results in an error, they take the same parameters as the error callback.

    success(data, textStatus, jqXHR)Function, Array

    A function to be called if the request succeeds. The function gets passed three arguments: The data returned from the server, formatted according to the dataType parameter; a string describing the status; and the jqXHR (in jQuery 1.4.x, XMLHttpRequest) object. As of jQuery 1.5, the success setting can accept an array of functions. Each function will be called in turn. This is an Ajax Event.

    timeoutNumber

    Set a timeout (in milliseconds) for the request. This will override any global timeout set with $.ajaxSetup(). The timeout period starts at the point the $.ajax call is made; if several other requests are in progress and the browser has no connections available, it is possible for a request to time out before it can be sent. In jQuery 1.4.x and below, the XMLHttpRequest object will be in an invalid state if the request times out; accessing any object members may throw an exception. In Firefox 3.0+ only, script and JSONP requests cannot be cancelled by a timeout; the script will run even if it arrives after the timeout period.

    traditionalBoolean

    Set this to true if you wish to use the traditional style of param serialization.

    typeString
    Default: 'GET'

    The type of request to make ("POST" or "GET"), default is "GET". Note: Other HTTP request methods, such as PUT and DELETE, can also be used here, but they are not supported by all browsers.

    urlString
    Default: The current page

    A string containing the URL to which the request is sent.

    usernameString

    A username to be used in response to an HTTP access authentication request.

    xhrFunction
    Default: ActiveXObject when available (IE), the XMLHttpRequest otherwise

    Callback for creating the XMLHttpRequest object. Defaults to the ActiveXObject when available (IE), the XMLHttpRequest otherwise. Override to provide your own implementation for XMLHttpRequest or enhancements to the factory.

    xhrFields(added 1.5.1)Map

    A map of fieldName-fieldValue pairs to set on the native XHR object. For example, you can use it to set withCredentials to true for cross-domain requests if needed.

    $.ajax({
       url: a_cross_domain_url,
       xhrFields: {
          withCredentials: true
       }
    });

    In jQuery 1.5, the withCredentials property was not propagated to the native XHR and thus CORS requests requiring it would ignore this flag. For this reason, we recommend using jQuery 1.5.1+ should you require the use of it.

The $.ajax() function underlies all Ajax requests sent by jQuery. It is often unnecessary to directly call this function, as several higher-level alternatives like $.get() and .load() are available and are easier to use. If less common options are required, though, $.ajax() can be used more flexibly.

At its simplest, the $.ajax() function can be called with no arguments:

$.ajax();

Note: Default settings can be set globally by using the $.ajaxSetup() function.

This example, using no options, loads the contents of the current page, but does nothing with the result. To use the result, we can implement one of the callback functions.

The jqXHR Object

The jQuery XMLHttpRequest (jqXHR) object returned by $.ajax() as of jQuery 1.5 is a superset of the browser's native XMLHttpRequest object. For example, it contains responseText and responseXML properties, as well as a getResponseHeader() method. When the transport mechanism is something other than XMLHttpRequest (for example, a script tag for a JSONP request) the jqXHR object simulates native XHR functionality where possible.

As of jQuery 1.5.1, the jqXHR object also contains the overrideMimeType() method (it was available in jQuery 1.4.x, as well, but was temporarily removed in jQuery 1.5). The .overrideMimeType() method may be used in the beforeSend() callback function, for example, to modify the response content-type header:

$.ajax({
  url: 'http://fiddle.jshell.net/favicon.png',
  beforeSend: function( xhr ) {
    xhr.overrideMimeType( 'text/plain; charset=x-user-defined' );
  },
  success: function( data ) {
    if (console && console.log){
      console.log( 'Sample of data:', data.slice(0,100) );
    }
  }
});

The jqXHR objects returned by $.ajax() as of jQuery 1.5 implement the Promise interface, giving them all the properties, methods, and behavior of a Promise (see Deferred object for more information). For convenience and consistency with the callback names used by $.ajax(), jqXHR also provides .error(), .success(), and .complete() methods. These methods take a function argument that is called when the $.ajax() request terminates, and the function receives the same arguments as the correspondingly-named $.ajax() callback. This allows you to assign multiple callbacks on a single request, and even to assign callbacks after the request may have completed. (If the request is already complete, the callback is fired immediately.)

Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks will be deprecated in jQuery 1.8. To prepare your code for their eventual removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.ajax( "example.php" )
    .done(function() { alert("success"); })
    .fail(function() { alert("error"); })
    .always(function() { alert("complete"); });

// perform other work here ...

// Set another completion function for the request above
jqxhr.always(function() { alert("second complete"); });

For backward compatibility with XMLHttpRequest, a jqXHR object will expose the following properties and methods:

  • readyState
  • status
  • statusText
  • responseXML and/or responseText when the underlying request responded with xml and/or text, respectively
  • setRequestHeader(name, value) which departs from the standard by replacing the old value with the new one rather than concatenating the new value to the old one
  • getAllResponseHeaders()
  • getResponseHeader()
  • abort()

No onreadystatechange mechanism is provided, however, since success, error, complete and statusCode cover all conceivable requirements.

Callback Function Queues

The beforeSend, error, dataFilter, success and complete options all accept callback functions that are invoked at the appropriate times.

As of jQuery 1.5, the error (fail), success (done), and complete (always, as of jQuery 1.6) callback hooks are first-in, first-out managed queues. This means you can assign more than one callback for each hook. See Deferred object methods, which are implemented internally for these $.ajax() callback hooks.

The this reference within all callbacks is the object in the context option passed to $.ajax in the settings; if context is not specified, this is a reference to the Ajax settings themselves.

Some types of Ajax requests, such as JSONP and cross-domain GET requests, do not use XHR; in those cases the XMLHttpRequest and textStatus parameters passed to the callback are undefined.

Here are the callback hooks provided by $.ajax():

  1. beforeSend callback is invoked; it receives the jqXHR object and the settings map as parameters.
  2. error callbacks are invoked, in the order they are registered, if the request fails. They receive the jqXHR, a string indicating the error type, and an exception object if applicable. Some built-in errors will provide a string as the exception object: "abort", "timeout", "No Transport".
  3. dataFilter callback is invoked immediately upon successful receipt of response data. It receives the returned data and the value of dataType, and must return the (possibly altered) data to pass on to success.
  4. success callbacks are then invoked, in the order they are registered, if the request succeeds. They receive the returned data, a string containing the success code, and the jqXHR object.
  5. complete callbacks fire, in the order they are registered, when the request finishes, whether in failure or success. They receive the jqXHR object, as well as a string containing the success or error code.

For example, to make use of the returned HTML, we can implement a success handler:

$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
    $('.result').html(data);
    alert('Load was performed.');
  }
});

Data Types

The $.ajax() function relies on the server to provide information about the retrieved data. If the server reports the return data as XML, the result can be traversed using normal XML methods or jQuery's selectors. If another type is detected, such as HTML in the example above, the data is treated as text.

Different data handling can be achieved by using the dataType option. Besides plain xml, the dataType can be html, json, jsonp, script, or text.

The text and xml types return the data with no processing. The data is simply passed on to the success handler, either through the responseText or responseXML property of the jqXHR object, respectively.

Note: We must ensure that the MIME type reported by the web server matches our choice of dataType. In particular, XML must be declared by the server as text/xml or application/xml for consistent results.

If html is specified, any embedded JavaScript inside the retrieved data is executed before the HTML is returned as a string. Similarly, script will execute the JavaScript that is pulled back from the server, then return nothing.

The json type parses the fetched data file as a JavaScript object and returns the constructed object as the result data. To do so, it uses jQuery.parseJSON() when the browser supports it; otherwise it uses a Function constructor. Malformed JSON data will throw a parse error (see json.org for more information). JSON data is convenient for communicating structured data in a way that is concise and easy for JavaScript to parse. If the fetched data file exists on a remote server, specify the jsonp type instead.

The jsonp type appends a query string parameter of callback=? to the URL. The server should prepend the JSON data with the callback name to form a valid JSONP response. We can specify a parameter name other than callback with the jsonp option to $.ajax().

Note: JSONP is an extension of the JSON format, requiring some server-side code to detect and handle the query string parameter. More information about it can be found in the original post detailing its use.

When data is retrieved from remote servers (which is only possible using the script or jsonp data types), the error callbacks and global events will never be fired.

Sending Data to the Server

By default, Ajax requests are sent using the GET HTTP method. If the POST method is required, the method can be specified by setting a value for the type option. This option affects how the contents of the data option are sent to the server. POST data will always be transmitted to the server using UTF-8 charset, per the W3C XMLHTTPRequest standard.

The data option can contain either a query string of the form key1=value1&key2=value2, or a map of the form {key1: 'value1', key2: 'value2'}. If the latter form is used, the data is converted into a query string using jQuery.param() before it is sent. This processing can be circumvented by setting processData to false. The processing might be undesirable if you wish to send an XML object to the server; in this case, change the contentType option from application/x-www-form-urlencoded to a more appropriate MIME type.

Advanced Options

The global option prevents handlers registered using .ajaxSend(), .ajaxError(), and similar methods from firing when this request would trigger them. This can be useful to, for example, suppress a loading indicator that was implemented with .ajaxSend() if the requests are frequent and brief. With cross-domain script and JSONP requests, the global option is automatically set to false. See the descriptions of these methods below for more details. See the descriptions of these methods below for more details.

If the server performs HTTP authentication before providing a response, the user name and password pair can be sent via the username and password options.

Ajax requests are time-limited, so errors can be caught and handled to provide a better user experience. Request timeouts are usually either left at their default or set as a global default using $.ajaxSetup() rather than being overridden for specific requests with the timeout option.

By default, requests are always issued, but the browser may serve results out of its cache. To disallow use of the cached results, set cache to false. To cause the request to report failure if the asset has not been modified since the last request, set ifModified to true.

The scriptCharset allows the character set to be explicitly specified for requests that use a <script> tag (that is, a type of script or jsonp). This is useful if the script and host page have differing character sets.

The first letter in Ajax stands for "asynchronous," meaning that the operation occurs in parallel and the order of completion is not guaranteed. The async option to $.ajax() defaults to true, indicating that code execution can continue after the request is made. Setting this option to false (and thus making the call no longer asynchronous) is strongly discouraged, as it can cause the browser to become unresponsive.

The $.ajax() function returns the XMLHttpRequest object that it creates. Normally jQuery handles the creation of this object internally, but a custom function for manufacturing one can be specified using the xhr option. The returned object can generally be discarded, but does provide a lower-level interface for observing and manipulating the request. In particular, calling .abort() on the object will halt the request before it completes.

At present, due to a bug in Firefox where .getAllResponseHeaders() returns the empty string although .getResponseHeader('Content-Type') returns a non-empty string, automatically decoding JSON CORS responses in Firefox with jQuery is not supported.

A workaround to this is possible by overriding jQuery.ajaxSettings.xhr as follows:

var _super = jQuery.ajaxSettings.xhr;
jQuery.ajaxSettings.xhr = function () {
    var xhr = _super(),
        getAllResponseHeaders = xhr.getAllResponseHeaders;

    xhr.getAllResponseHeaders = function () {
        if ( getAllResponseHeaders() ) {
            return getAllResponseHeaders();
        }
        var allHeaders = "";
        $( ["Cache-Control", "Content-Language", "Content-Type",
                "Expires", "Last-Modified", "Pragma"] ).each(function (i, header_name) {

            if ( xhr.getResponseHeader( header_name ) ) {
                allHeaders += header_name + ": " + xhr.getResponseHeader( header_name ) + "\n";
            }
            return allHeaders;
        });
    };
    return xhr;
};

Extending Ajax

As of jQuery 1.5, jQuery's Ajax implementation includes prefilters, converters, and transports that allow you to extend Ajax with a great deal of flexibility. For more information about these advanced features, see the Extending Ajax page.

Additional Notes:

  • Due to browser security restrictions, most "Ajax" requests are subject to the same origin policy; the request can not successfully retrieve data from a different domain, subdomain, or protocol.
  • Script and JSONP requests are not subject to the same origin policy restrictions.

Examples:

Example: Save some data to the server and notify the user once it's complete.

$.ajax({
  type: "POST",
  url: "some.php",
  data: "name=John&location=Boston"
}).done(function( msg ) {
  alert( "Data Saved: " + msg );
});

Example: Retrieve the latest version of an HTML page.

$.ajax({
  url: "test.html",
  cache: false,
  success: function(html){
    $("#results").append(html);
  }
});

Example: Send an xml document as data to the server. By setting the processData option to false, the automatic conversion of data to strings is prevented.

var xmlDocument = [create xml document];
var xmlRequest = $.ajax({
  url: "page.php",
  processData: false,
  data: xmlDocument
});

xmlRequest.done(handleResponse);

Example: Send an id as data to the server, save some data to the server, and notify the user once it's complete. If the request fails, alert the user.

var menuId = $("ul.nav").first().attr("id");
var request = $.ajax({
  url: "script.php",
  type: "POST",
  data: {id : menuId},
  dataType: "html"
});

request.done(function(msg) {
  $("#log").html( msg );
});

request.fail(function(jqXHR, textStatus) {
  alert( "Request failed: " + textStatus );
});

Example: Load and execute a JavaScript file.

$.ajax({
  type: "GET",
  url: "test.js",
  dataType: "script"
});

Support and Contributions

Need help with jQuery.ajax() or have a question about it? Visit the jQuery Forum or the #jquery channel on irc.freenode.net.

Think you've discovered a jQuery bug related to jQuery.ajax()? Report it to the jQuery core team.

Found a problem with this documentation? Report it to the jQuery API team.

* All fields are required
  • http://twitter.com/TweetKishore TweetKishore

    I dont see support for passing HTTP Headers to the Server. Is this not supported?

  • Anonymous

    Is there any additional documentation available for ETag support with .ajax?

  • Mike

    Any chance you could expose the JSON-parsing guts of the (undocumented?) httpData function as a public helper? We occasionally need to parse JSON that hasn’t arrived via an AJAX request, and it feels a bit silly having to copy&paste this code.

  • AreN

    There’s no description from which version of jQuery any key was added.

  • http://slightlymore.co.uk/ Clinton Montague

    You can do this with: beforeSend(XMLHttpRequest)

    Example:

    $.ajax({
    beforeSend: function (xhr) { xhr.setRequestHeader(“X-Your-Header”, “Your-value”) },
    …,

    });

    (Note: This code hasn’t been tested – so there might be a typo, but you can see the overall flavour of adding headers.)

  • http://twitter.com/dovidweisz Dovid Weisz

    Do files requested with ajax have a different cache than css background images?

    What I’m trying to do is make sprite buttons accessible for users that have background images disabled, and thought i would be able to detect that by requesting that same image with ajax
    $.ajax({url:”someImage.jpg”, ifModified:true });
    .. then check the response header
    but it keeps comming back with a 200

    however if i request it again through ajax i get the 304 i was looking for.

    it seems like this is done for security reasons — anybody have any insight?

  • Anonymous

    Would you please describe the returned value(s) ?

    (I gathered this [from a debugger] after calling something that didn’t exist)

    {
    “readyState”: 4,
    “responseXML”: null,
    “onload”: null,
    “onerror”: null,
    “onloadstart”: null,
    “status”: 404,
    “onabort”: null,
    “upload”: {
    “onabort”: null,
    “onload”: null,
    “onprogress”: null,
    “onerror”: null,
    “onloadstart”: null
    },
    “onreadystatechange”: null,
    “onprogress”: null,
    “withCredentials”: false,
    “responseText”: “”,
    “statusText”: “OK”
    }

    thanks!

  • http://twitter.com/profulla profulla

    HTTP code: 404 (file/resource at the URI does not exist :) )

    Wikepedia: The 404 or Not Found error message is a HTTP standard response code indicating that the client was able to communicate with the server but the server could not find what was requested.

  • JNat

    async: false only seems to work as expected in Firefox. A workaround can be found here:
    http://blog.s-gray.com/2009/07/27/jquery-retrieving-the-data-from-an-ajax-call-into-the-global-scope/

  • http://www.jscolton.com/ Jeremy Colton

    It seems that the success callback in JQuery 1.3.2 does not receive the XMLHttpRequest object as its 3rd parameter since doing the following shows ‘unefined’:

    $.ajaxSetup({
    success: function(data, status, xhr) {
    alert(“xhr: ” + xhr);
    }
    });

    I can’t find any reference to this working via Google. What stupid thing am i doing? I want to read the HTTP Headers in the response.

    many thanks
    Jeremy

  • oops

    “Please do post corrections or additional examples for jQuery.ajax() below. We aim to quickly move corrections into the documentation.”

    jQuery.ajax does not support requests to absolute URLs such as accessing “http://…”, only relative urls.

  • http://www.learningjquery.com/ Karl Swedberg

    Hi Jeremy,
    Sorry about the confusion. The XMLHttpRequest object is only available to the success callback as of jQuery 1.4. You can access it in 1.3.2 via the complete callback.

  • http://www.learningjquery.com/ Karl Swedberg

    That’s a limitation imposed by some browser vendors, not jQuery, for security reasons. Do you think we should still note it somewhere?

  • oops

    Same Origin Policy strikes again! (in this case, the SOP correctly applied when trying to access a.b.c.com from b.c.com)

    Yes I feel it should be noted; there are in fact Google hits with confused devs asking “Why doesn’t jQuery ajax support absolute urls? I don’t see any examples.”, etc.

    Granted, they’d get the same results with other XHR wrappers, but I personally used jQuery precisely because I incorrectly thought my own XHR functions were bugging up.

  • http://www.jscolton.com/ Jeremy Colton

    Hi Karl,

    Many thanks for your fast reply. I thought about using the ‘complete’ handler, but the problem with it for me is as follows:

    My ajax request is to a Struts action which adds a HTTP header. The result of the struts action is a JSP. But this JSP loads a .js file. So the ‘complete’ handler only fires after the .js file has loaded signalling the end of the initial ajax request. Problem is, the HTTP headers that the XMLHttpRequest object provides is for the final HTTP request (ie the .js file) that is part of the initial ajax request. The HTTP headers in the response for .js file don’t have the additional HTTP header.

    Whereas, the ‘success’ handler fires for every request triggered as part of the initial ajax request and here I would see the added HTTP header in the XMLHTTPRequest object accompanying the loading of the JSP. Hope this makes sense…

  • joelangeway

    It looks like $.ajax() does a deep copy with $.extend(true, …) of the options passed into it, including the context of the callbacks. Firstly, this seams to mean the page hangs if my context object has a circular reference. Secondly, do my callbacks get the right context? Am I totally wrong?

  • Sybiam

    It seems that when using dataType as “script” JQuery always send a parameters called ‘_’.
    For example, if we use:
    $.ajax({‘url’: ‘test.com’, ‘type’: ‘GET’})
    This is sent as OPTIONS
    and
    $.ajax({‘url’: ‘test.com’, ‘dataType’: ‘script’, ‘type’: ‘GET’})
    This is sent as GET with extra parameters

    I use firefox. I don’t know if it’s a browser thing or JQuery.

    Technically the ‘_’ param isn’t a problem by itself. But I have something that create a signature from all the parameters except ‘sig’. In other word I build a sig from all the parameters then the ajax method send the extra params _ and the sig can’t be validated since I never know what this param will be and I do not have access to the other server. And for some reasons. The “OPTIONS” mode doesn’t work.

  • webb230

    Word of caution. I was using a function like:
    $.ajax({
    url: [some_url],
    async:false
    }).responseText;

    Worked fine in firefox, but in Safari, responseText was returning an empty value (just blank, no NaN, null, etc). Turns out, really simple solution. My browser url was set at http://somedomain.com, while my ajax request url was http://www.somedomain.com. In other words, for the ajax request url, be sure and use the exact same domain as entered in the browser.

    jquery ajax responseText blank

  • Anonymous

    I’ve found a handy way of dealing with this is to use window.location, then you get the url the browser is looking at ;-)

  • http://www.535design.com/people/ben.blank/ Ben Blank

    It appears that same-domain scripts loaded via this method cannot be debugged in Venkman or Firebug. Such scripts are inserted into the document via jQuery.globalEval, which removes the relevant <script> node after inserting it, so no source is available to debuggers. Breakpoints (“debugger;”) are silently swallowed.

  • http://www.tekfix.com.au/ Tony

    Hey, can we get an example of using this function over https? I’m wondering if the only way is o put in the full link in the url vairable.

  • notzippy

    The documented dataType = 'html' is specified two different ways on this page.
    1)”html”: Returns HTML as plain text; included script tags are evaluated when inserted in the DOM.
    2) If html is specified, any embedded JavaScript inside the retrieved data is executed before the HTML is returned as a string.

    I believe the second case is wrongly documented since it leads you to believe that the script will be evaluated (executed) before you manually place the returned content inside the DOM.

  • Michael

    With “jsonp”, a request will cause the complete-function being trigged two times.
    $.ajax({
    url: “something.php”,
    dataType: “jsonp”,
    success: function(data, text, request) { do_something(); } ,
    complete: function(xhr, status) {console.log(status); return false; },
    });

    will show the status 2 times at the console. Is there a work around for this? Or a better way to call the function at “onComplete”?

  • http://mathiasbynens.be/ Mathias Bynens

    As a developer, you should decide between http://www.example.com and example.com, and serve 301 redirects to the URI of choice. It will save you a lot of trouble (webb230’s comment is just one of the many examples), and it’s better for SEO. Ideally, every document should only have one URI.

  • Tagny Daggart

    If you are using JSONP for simply sending data and don’t really require any data back, be sure to send a jsonp-ified ‘true’ or something back, because if you simply return nothing, jQuery will not trigger your success handler.

  • Jeremy

    Please note, that when using dataType: XML that both the client and server haveto be in the same domain. This means that you cannot run the client (your javascript) on http://myCompany/ while trying to retrieve data from http://anotherCompany/service. However, you can do this when using dataType: Script or dataType: JSON

  • Jeremy

    Woops… I should have pointed out that Firefox and IE work differently in regards to this. IE allows you to go across domains… Firefox does not.

  • Anonymous

    You can get at the settings object using the ‘this’ keyword.

    beforeSend: function(xhr) { log(this.data); } //log the querystring sent

  • Adam Parsley

    For some reason it does not take any data after an & symbol. If someone types “example 1 & example 2 … etc” then all that will get posted is “example 1 ”

    Any help would be greatly appreciated

  • sly foxxx

    Adam,

    it is probably interpreting everything after the ‘&’ symbol as a new argument. So, in the data string that gets passed you might have something like this: ?fieldName=example1&example2… it actually thinks that example2 is the name of the next filed. try url encoding the data string. Hope this helps

  • Guest

    Checking that if file exists:

    $.ajax({url:’somefile.dat’,type:’HEAD’,error:do_something})

  • AndyJ

    Safari doesn’t either.

  • mjuhl24

    When making a cross-domain request, this method seems to fail silently in Opera.

  • http://twitter.com/tprochazka Tomáš Procházka

    I think that context description and example is bad. I have trouble with this and than I found, that is necessary use $this.context in callback function to access context which is defined in ajax() call.

    For example this:
    $(document).ready(function() {
    $(‘.acontrol a’).click(function() {
    $.ajax({ url: “main_rpc.php”, context: $(this).parent(), success: function(data, textStatus){
    this.context.html(‘ok’);
    }});
    return false;
    });
    });

  • http://www.apexwork.com test

    As a developer, you should decide between http://www.example.com, and serve 301 redirects to the URI of choice. It will save you a lot of trouble (webb230’s comment is just one of the many examples), and it’s better for SEO. Ideally, every document should only have one URI.

  • http://patricklynchart.com Patrick

    For anyone who is having problems with getting their success callback to work, I tried many many things and read through the forums for why the JSON object could not be parsed or why I got empty strings and why it just won’t work. All I had to do in the end was upload everything to a web server and it worked fine. Even though Charles (web debugging proxy) showed the response coming back properly when testing locally, for some reason the JSON object could not be parsed and the ajax called would fail silently. So… UPLOAD IT TO A WEB SERVER!

  • Nepherim

    Note, that a POST will always send using UTF8 regardless of what contentType/charset is set (ref http://stackoverflow.com/questions/657871/anoth…). This needs to be documented, as it is totally unexpected behavior.

  • http://www.learningjquery.com/ Karl Swedberg

    Thanks for bringing this to the attention of those who might be coming across this problem.
    If you haven't filed a bug at http://dev.jquery.com/ or reported the issue at http://forum.jquery.com/ I would strongly encourage you to do so. Nobody will do anything to help fix the problem if you only post it here (or stackoverflow.com). Thanks.

  • adam2

    In 1.4.2 jquery doesn’t call ajax error callback on timeout/connection error,
    to fix this:
    remove the trailing ” || xhr.status === 0″ from httpSuccess function

  • Mat

    Erf I have not taken into account the same origin policy, it works fine using file_get_contents with allow url fopen activate.

  • http://twitter.com/steida Daniel Steigerwald

    Please fix doc for type option. The sentence “can also be used here, but they are not supported by all browsers.” in not correct for XmlHttpRequest object. http://stackoverflow.com/questions/165779/are-t…

  • http://www.learningjquery.com/ Karl Swedberg

    does it work if you set the timeout option?

  • Nepherim
  • blindfish

    Just been tearing my hair out and have just figured out why testing locally on Firefox/IE was working/broken. For the benefit of other noobs like me; it's probably worth mentioning this will fail when testing locally on IE (and it would appear Chrome); but work fine once uploaded to a server. Presumably a security issue working with local files?

  • Heshanh

    if you are trying to check if the request is json its “HTTP_X_REQUESTED_WITH”

  • http://www.superiordesign.com Matt

    Thank you for posting this! I had a very similar issue. Running the .ajax() function on my local machine (or a box on my network) would freeze the browser, After uploading it to another server it worked fine.

  • FIRAT

    i think timeout doesn’t work on sync transfers.

  • Nimesha

    what is the different between Ajax complete: & Ajax success:

  • Praveen Prasad

    ajax compelete is always called doesnt matter success or error- after suc/err handler fns are called

  • Some guy

    Getting an AJAX error when trying to fire an ajax request from keypress event. After capturing the keypress event I’m able to trigger the click event but then my ajax request fails. This only happens in Firefox 3.6.6. My code is similar to the following:

    $(selector)
    .click(function(){
    $.ajax({
    url: jsonURL,
    dataType: “jsonp”,
    jsonp: “jsoncallback”,
    success: function(json)
    {
    console.log(json);
    },
    error: someErrorFunc
    });
    });

    When using $(selector).trigger(“click”) in Firefox 3.6.6 I get an ajax error. Any ideas?

  • Chrstian

    I’ve the same problem, probably introduced with the xhr customization function

  • Some Guy

    I’m still pondering this one, any ideas would be appreciated. Works in Chrome, IE but not in FF 3.6.6. Will work in FF if I actually clicked on the object [a.k.a $(selector) ] but not if I trigger the click.

  • Raphael Coulonvaux

    Hi,

    Size does matter…

    Any idea of the json content maximum size supported by the parser depending on the browser ?

    When getting locally a 4,8MB .json file, I get a “parseerrror” with FF 3.6.6 while no error with IE7.
    No error with FF 3.6.6 if I remove any (syntactycally correct) entry in the array of the .json file !

  • http://twitter.com/jeremyckahn Jeremy Kahn

    Not that you can’t find this out elsewhere, but I’ll say it here: JSONP calls allow you to make requests not only to servers other than the one that the request originated from, but also from local files.

    To make a JSONP request, simply append “callback=?” to the URL you are trying to reach, as specified in the documentation for jQuery.getJSON(). Remember, jQuery.getJSON() is just a wrapper for jQuery.ajax()

  • http://twitter.com/john_hamelink s0l1dsnak3123

    I wrote an article on how to combat cross-domain POSTing using jQuery. Take a look at it here: http://www.johnhamelink.com/2010/07/combat-cros…

  • Sumit

    i am using jquery and 2 request is making in a few sec difference. The problem is that the second response is waiting for first request completion or first response.

  • http://tuckedgraphics.com Tucker Graczkowski

    I would add the second request to the callback function of the first.

  • Muhammad

    How can i send an event from the server to the client ?
    i tried a timer to check if a new event exists to handle it
    but i didn’t find that a good solution

  • http://perfect-flowers.ru bdiang

    search keywords: COMET, long polling

  • http://twitter.com/CallMeLaNN CallMeLaNN

    Your server keep sending an integer no as an ID, when new event occur, server increase the no.
    You can also use other way like UID or hash no as long as it unique.
    When client keep requests by polling check this number in few second/minute, notice the changes, then client will request the data of the events. This will make your app handy and lightweight. Gmail inbox check and twitter API to external web uses this way in my opinion.

  • AM

    if our server function return datatable or other types of data then how to get it?

  • Isaac Diaz

    Hi,
    take a look to http://www.json.org

    If you are using json you can encode your results and access them as types in the result object. give it a try and use firebug to see the structure of the objects.

    Hope this helps.

  • Steve_the_fiend

    Ideally you should think about what you are returning and what the best format for that data is. For example if you dont have many concurrent connections and you intend to display a small datatable as an html table that will be dynamically appended to your dom, why not construct the html table server side and return it in a state that is ready to be appended. If the table is large you will most likely be better off using JSON as previously mentioned see http://blog.andremakram.com/?p=7 for more details

  • Jason

    Tip:
    PHP provides function which converts from Associative Array to JSON object.
    http://php.net/manual/en/function.json-encode.php

  • Albert Asensio

    very interesting, thanks

    http://no-suelo.blogspot.com/

  • http://twitter.com/jokeyrhyme Ron Waldon

    I am working on a project where we currently display a circular (infinite / indefinite) progress animation while performing AJAX requests. I would really like to transition to more precise linear progress animations (0-100%), but we'd need 2 pieces of information:
    - how big the server response is
    - how far we are through receiving it

    Does jQuery expose this information? I'd really like to avoid having to fire off additional AJAX requests just to fetch this progress information.

  • http://twitter.com/aasensiog Albert Asensio
  • http://twitter.com/aasensiog Albert Asensio
  • http://twitter.com/aasensiog Albert Asensio
  • http://twitter.com/aasensiog Albert Asensio
  • http://twitter.com/aasensiog Albert Asensio
  • http://twitter.com/aasensiog Albert Asensio

    Nice post.

    A detailed description how use JQuery and AJAX:

    http://no-suelo.blogspot.com/2010/09/calling-ajax-with-jquery.html

  • http://www.igmarkets.co.uk/ CFD Trading

    >>When using $(selector).trigger(“click”) in Firefox 3.6.6 I get an ajax error. Any ideas?

    same here…has anyone find a solution or work around this?

  • Dumdidum

    I searched for this a long time, so i'll link it here:
    http://groups.google.com/group/jquery-en/browse_thread/thread/8f064b556114ba73?pli=1

    It's about what the server-code must do, that the “error:”-part is reached.

  • Dumdidum

    I searched for this a long time, so i'll link it here:
    http://groups.google.com/group/jquery-en/browse_thread/thread/8f064b556114ba73?pli=1

    It's about what the server-code must do, that the “error:”-part is reached.

  • http://bigasterisk.com/ drewp

    Apparently on server response of 303 (standard for a POST response), jquery 1.4.2 calls the error handler instead of the success one. I am even getting undefined for the 3rd arg to my callback. This is working for me: error: function(xhr, text, err) { if (xhr.status == 302) { xhr.getResponseHeader('Location') …

  • Axelvitali

    calling a Webservice – Webmethod Hello(). Got a response {“d”,”hello”}. In FireFox call to Success function first and then Error function .In Crhome just call the success. In IE 8 just call the error and giving a parsererror. Any ideas? Thanks

  • ph1g

    300 codes are for redirect. Shouldn't a post return a 2xx code?

    http://en.wikipedia.org/wiki/HTTP_response_codes#3xx_Redirection

  • http://www.learningjquery.com/ Karl Swedberg

    look at the other options, such as success and complete.

  • Aka6

    lol

  • millepag

    “POST data will always be transmitted to the server using UTF-8 charset, per the W3C XMLHTTPRequest standard.”

    Actually, that doesn't seem to be true for IE7, which wanted to send my POST data using iso-8859-1. Easily fixed by adding:
    contentType: “application/x-www-form-urlencoded; charset=utf-8″

    For all you brave IE coders ;)

  • Hola

    excelente

  • http://www.pric.co.uk N_hayath

    ow thanks

  • Musaddiq

    When we load a php page, then how we can call a specific function of this page…
    thanks in advance…

  • Birder

    How should I do if I have a loading function but want to put the result on the existing one…
    I have ex.:
    1 apa
    14 kamel
    and when i re”load” again I want to put the new one on “1 apa”, is it possible?

  • Masterhard

    The same issue has google chrome. At least 7.0.517.36 beta :)

  • http://codebad.com/ Donny Viszneki

    The optional “complete” callback does not seem to fire if an exception is thrown by the “success” or “error” callbacks.

    Exceptions thrown by “success” or “error” callbacks DISAPPEAR SILENTLY if async:true (default option.)

  • whatevssssss

    Note: as a personal experience, catching an exception thrown from an asynchronous call cannot be caught (with try … catch) in most browsers (in Firefox the exception gets caught, at least in Firefox 3.6.10).

    In jquery 1.4.2, even with “async: false” the exceptions thrown by “error” callbacks DISAPPEAR SILENTLY. After doing some debugging I saw this line:

    var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {

    which makes the synchronous calls to behave asynchronous, thus making it impossible to catch an exception thrown by the error callback.

    To fix this the line should change to:

    var onreadystatechange = function( isTimeout ) {
    ….
    (and after the onreadystatechange block add)
    if (s.async)
    {
    xhr.onreadystatechange = onreadystatechange;
    }

  • Kozie

    For users who also want to execute an AJAX request, in safari, in the close events.. use the synchronous method; asynchronous methods are ignored.

  • Ramarao55u

    hi i can't navigate to traget url .can any one help me please

  • http://twitter.com/criptkiller jonathan fontes

    Hello,

    i can do this :

    beforeSend(e) : {
    alert((e.loaded/e.total)*100);
    }

    ???

  • Abe Tobing

    true

    i think it's some of 1.4.2 bugs

  • Coxixx
  • Nikopiero

    i have a problem on this row in jquery file:
    xhr.send( type === “POST” || type === “PUT” || type === “DELETE” ? s.data : null );

    ?????

  • http://twitter.com/criptkiller jonathan fontes

    Hello, any one can help me to do a progressbar client-side with javascript… ??

  • http://www.learningjquery.com/ Karl Swedberg

    Please direct this question to the appropriate forum at http://forum.jquery.com/
    You'll have a much better chance of having the questions answered there.

    Thanks for understanding.

  • http://www.learningjquery.com/ Karl Swedberg

    If you think you've discovered a bug, please report it on the jQuery bug tracker. Thanks!

  • Claudio M. Alessi

    I think there should be a paragraph about ajax file uploads, which seems to be a common misunderstanding of the $.ajax() jQuery method. It would be nice to explain that, for portability reasons, the http PUT should *not* be used and that you *can't* upload files via $.ajax() without using an iframe (or non javascript-based technologies like flash, java, and so forth).

  • http://sedition.com/ apv
  • http://coherence.seovic.com Aleks

    Actually, Post/Redirect/Get idiom doesn't make much sense when POST is performed asynchronously. Its primary purpose is to prevent duplicate submissions by forcing browser to perform a GET to a result page, which is not an issue with Ajax, as the page didn't really change and there is no record of the POST in the browser history.

    Now, what the POST *should* return depends on how it is used. If it is used for what it was intended, it should probably return 201 – Created and the Location header to a new resource. Unfortunately, POST is quite often used as a replacement for PUT and DELETE as well, due to the fact that some browsers only support GET and POST, in which case it should probably return 204 – No Content.

  • http://sedition.com/ apv

    I agree about the response status options but I don't think that the backend should behave differently or should be coded to behave a particular way because one assumes only one kind of request will ever go to that URI.

  • http://coherence.seovic.com Aleks

    I absolutely agree — backend should send the appropriate response based on the task performed.

    The thing to keep in mind though is that you *can* differentiate between all HTTP verbs on the backend — it is the browser that forces us to jump through the hoops and use POSTs even when we shouldn't.

  • Dave_degraaf

    when i use the second example then i get the source code in the alert box

  • 408880660

    whoa

  • 408880660

    whoa

  • 408880660

    whoa

  • http://twitter.com/meherranjan Meher Ranjan

    make use of the datatype parameter, like if its a json use data type json and then you can use it as json. Though jQuery intelligently understands the data, sometimes specifying explicitly makes it easy. See the last example for usage.

  • Hola

    dfsfsfsdf

  • Xiaozishousovmusic

    how to send sepcial data ,for example ,+ ,×,
    please give suggestion,thanks!

  • Xiaozishousovmusic

    how to send sepcial data ,for example ,+ ,×,
    please give suggestion,thanks!

  • Kthejoker

    It would be nice to see the jQuery.param() documentation linked from the area on “sending data to the server.” I came to this page via Google looking exactly for such a jQuery function, and only after I had been defeated and just started moving around the rest of the documentation did I come across it (under Miscellaneous.)

  • TheBizzTech

    In my php script I was getting back the source code of the html in the page so I just used echo to only return the data I needed via ajax.

  • http://www.learningjquery.com/ Karl Swedberg

    done.

  • MattK

    Which browsers/versions have a problem with PUT/DELETE? … anyone have a good up-to-date comparison chart?

  • Greasy Sneakers

    Here is a plugin i found to make ajax calls for user input more efficient:

    http://github.com/dougle/jQuer…

    I'm using this plugin to limit load on my server, working well so far.

  • http://twitter.com/mtspbr marcelo

    How I can send a multipart form-data uploading form with jQuery Ajax? I have a form sending text fields and image file. When image file is large, greater than server is setting, the text fields and image file are null on the server loosing the data of forms on response. I would like use Ajax (with jQuery) to solve this issue, but $('form').serialize() don't work with image tag.

  • Hello

    The callback does not invoke.

  • Hello

    The callback does not invoke.

  • Hello

    The callback does not invoke.

  • Hello

    The callback does not invoke.

  • Hello

    The callback does not invoke.

  • Hello

    The callback does not invoke.

  • Hello

    The callback does not invoke.

  • Hello

    The callback does not invoke.

  • Willis_john85

    I like Jquery

  • Mail

    Is dataType json?
    Is returned data a valid json?

  • Washplanjack

    Hi Marcelo have you tried using an input type image and pass in a name attribute as well as a Id attribute to get this to work

  • dongdongzhang

    test inputbox

  • Luis2

    hola

  • Guest

    great…

  • Kingdom_0

    The same issue has google chrome. At least 7.0.517.36 beta

  • Chrissy

    Is there anyway to set priority? I do 50 $.ajax calls to get certain information regarding the results. Once the page loads ($.ajax posts are still coming back) and the user clicks on the link, then that new ajax xhr is at the bottom of the list. Am I not utilizing this properly? Kind of confused on what my options are.

  • José

    is provably having problems when url contains % ….

  • effulgentsia

    This documentation page lists beforeSend() as taking a XMLHttpRequest parameter only. But the code is s.beforeSend.call(callbackContext, xhr, s), and as far back as 1.2.5, was s.beforeSend(xhr, s). Should the docs be updated to say beforeSend(XMLHttpRequest, options)?

  • Aa

    engane padikum

  • http://twitter.com/xiian Tom Sartain

    You should probably consider restructuring the way that you're doing things.

    Try to consolidate your calls to the server when you can. If you know that you'll need to do so many calls as soon as the page loads, batch them up into a handful of calls instead.

  • Sf

    sfdsfds

  • Devlshone

    Could someone explain to me why this line would be causing my application to bomb:

    xhr.send( noContent || s.data == null ? null : s.data );

  • MB

    What is the need to redirect when doing AJAX?
    This technique if for preventing double posts if users refresh the browser

  • Iwona

    Hello, can somebody help me, please: my $.ajax calls an .asmx web service class that catches various exceptions returning errormessages (strings) – this is a return type of success-function. THe problem is I never get hold of them cause if sth doesnt succeed, it returns error callback instead of success-callback. Any suggestions how I can make errors “customized” in this case? Thanks in advance.

  • McCoy

    I have the following 3 lines:
    $(document).ready(function(){
    1 $(“#personSearchForm “).submit(function(){
    2 $(“body”).css(“cursor”, “progress”) ;
    3 jsonobj=$.ajax({url:server_url, async:false……….

    Changing the cursor to progress gets executed after the ajax call – weird !

  • http://linus.unnebäck.se/ Linus Unnebäck

    It's not weird since you have async:false. The page then never gets to update the styles, or for that matter anything. Use setTimeout(…, 0); or async:true to work around the issue.

  • Hgfdh

    hhfdhfdhfghfdhfd

  • Privacy

    fuck u mother fucker

  • http://www.ovhenri.com OVHenri

    qweqweqwesadqwq

  • http://twitter.com/paxos paxos

    cache
    Default: true, false for dataType 'script' and 'jsonp'

    Thats definitly a bug! You have to explicit set cache to FALSE even when you use dataType script! This causes strange bugs on firefox, so be careful!

  • https://www.google.com/accounts/o8/id?id=AItOawlYHmUOtJHeoIjVtmAyNIyP3XgOk-ue9gw Nyuszika7H

    If s.data is null, you don't need another check for it. Just use this:
    xhr.send(noContent || s.data)

  • Anton-ny

    Страница некорректно загружается из-за неправильного закрытия тэгов
    Например “/>” вместо “>”

    Page loaded incorrectly due to improper closing tags
    For example “/>” instead of “>”

  • Asdas

    how i can send string: !@#$%^&*()”

  • Saranghdave

    How to send $.ajax() PUT request with XML data ?

  • Bob

    ajax-in-function-with-custom-parameter-for-persistence – http://forum.jquery.com/topic/…

  • fredrick

    Here is a good usage example
    http://sharepoint-snippets.com…/

  • felipe

    is possible to use server push ??

  • felipe

    is possible to use server push ??

  • Albanx

    user encodeuricomponent(!@#$%^&*()” )

  • Mohammad

    Hi
    Thank you for your example. Could you please tell me why I can't give a url? I mean it only works when I give relative path of say html files but not an URL address say http://www.awebsite.com ?

  • Dio

    Hi, I want to send the char “+” with ajax, but the result in the $_POST in php is interval. So the $.ajax is replacing the “+” with interval. I tried encodeURIComponent, serialization, base64 and a lot more things but nothing had worked. Please give me some advice.