Thank you, **@yvan**, for answer. Links you added are good. But there are better documentation in source code comments. If you want to understand how it works you should look through files `includes/ajax.inc` and `misc/ajax.js`. My problem was solved like this: <!-- language: lang-js --> (function($) { Drupal.behaviors.MyModule = { attach: function (context, settings) { // Overwrite beforeSubmit Drupal.ajax['some_element'].options.beforeSubmit = function (form_values, element, options) { // ... Some staff added to form_values } //Or you can overwrite beforeSubmit Drupal.ajax['some_element'].options.beforeSerialize = function (element, options) { // ... Some staff added to options.data // Also call parent function Drupal.ajax.prototype.beforeSerialize(element, options); } //... These functions are calling in [jQuery Form Plugin][1]. [1]: http://jquery.malsup.com/form/