JavaScript. Подробное руководство, 6-е издание, стр. 318

<b>$(&quot;#submit_button&quot;).click(function(event) {</b>

<b>S(this.form).load(           // Заменить форму, загрузив...</b>

<b>this.form.action,            // из указанного url</b>

<b>$(this. form). serialize()); // с данными, добавленными в него </b>

<b>event.preventDefault():      // Отменить отправку формы по умолч.</b>

<b>this.disabled = &quot;disabled&quot;:  // Предотвратить несколько</b>

<b>});                          // попыток отправки</b>

Если в аргументе (или параметре) передать функции поддержки архитектуры Ajax в библиотеке jQuery объект, а не строку, то библиотека jQuery по умолчанию (с исключениями, описываемыми ниже) автоматически преобразует объект в строку, вызвав функцию

<b>jQuery.param()</b>
. Эта вспомогательная функция интерпретирует свойства объекта как пары имя/значение и, например, преобразует объект {х:1 ,у:'hello”} в строку "x=1&y=hello".

В версии jQuery 1.4 функция

<b>jQuery.param()</b>
способна обрабатывать более сложные объекты. Если значение свойства объекта является массивом, для каждого элемента этого массива будет создана отдельная пара имя/значение, а к имени свойства будут добавлены квадратные скобки. Если значением свойства является объект, имена свойств этого вложенного объекта помещаются в квадратные скобки и добавляются к имени внешнего свойства. Например:

<b>S.param({a:[1,2,3]}) // Вернет &quot;a[]=1&amp;a[]=2&amp;a[]=3”</b>

<b>$.param({o:{x:1,y:true))) // Вернет &quot;o[x]=1&amp;o[y]=true&quot;</b>

<b>$.param({o:{x:{y:[1.2]}&gt;&gt;) // Вернет &quot;o[x][y][]=1&amp;o[x][y][]=2&quot;</b>

Для обратной совместимости с версией jQuery 1.3 и ниже во втором аргументе функции

<b>jQuery.param()</b>
можно передать значение true или установить параметр
<b>traditional</b>
в значение true. Это предотвратит использование расширенных возможностей сериализации свойств, значениями которых являются массивы или объекты.

Иногда бывает необходимо передать в теле POST-запроса объект

<b>Document</b>
(или какой-то другой объект, который не должен преобразовываться автоматически). В этом случае можно установить в параметре
<b>contentType</b>
тип данных и в параметре
<b>processData</b>
значение false и тем самым предотвратить передачу объекта с данными функции
<b>jQuery.param().</b>

*************************************************

В отличие от

<b>jQuery.getScript(),</b>
функция
<b>jQuery.getJSON()</b>
принимает необязательный аргумент с данными, подобный тому, что передается методу
<b>load().</b>
Если функции
<b>jQuery.getJSON()</b>
необходимо передать данные, они должны передаваться во втором аргументе, а функция обратного вызова - в третьем. Если дополнительные данные не требуются, функцию обратного вызова можно передать во втором аргументе. Если данные являются строкой, она будет добавлена в конец URL-адреса, вслед за символом ? или &. Если данные передаются в виде объекта, он будет преобразован в строку (как описывается во врезке) и добавлен в конец URL-адреса.

Если строка URL или данных, передаваемая функции

<b>jQuery.getJSON(),</b>
содержит последовательность символов «=?» в конце или перед амперсандом, она определяет запрос JSONP. (Описание формата JSONP приводится в разделе 18.2.) Библиотека jQuery заменит знак вопроса именем функции обратного вызова, которая будет создана автоматически, и функция
<b>jQuery.getJS0N()</b>
будет действовать, как если бы выполнялся запрос сценария, а не объекта в формате JSON. Этот прием не работает со статическими JSON-файлами данных: он может применяться только при наличии сценариев на стороне сервера, поддерживающих формат JSONP. Однако, поскольку данные в формате JSONP обрабатываются как сценарии, для их получения допускается выполнять междоменные запросы.

19.6.2.3. jQuery.get() и jQuery.post()

Функции

<b>jQuery.get()</b>
и
<b>jQuery.post()</b>
загружают содержимое из указанного адреса URL, отправляя дополнительные данные, если они имеются, и передавая результат указанной функции обратного вызова. Функция
<b>jQuery.get()</b>
делает это, выполняя HTTP-запрос методом GET, а функция
<b>jQuery.post()</b>
- методом POST, но во всем остальном эти две вспомогательные функции совершенно идентичны. Обе они принимают те же три аргумента, что и функция
<b>jQuery.getJSON():</b>
обязательный URL-адрес, необязательную строку или объект с данными и технически необязательную, но практически всегда используемую функцию обратного вызова. В первом аргументе функции обратного вызова передаются полученные данные, во втором - строка «success» и в третьем - объект
<b>XMLHttpRequest</b>
(если он использовался для выполнения запроса):

<b>// Запросить текст с сервера и отобразить его в диалоге alert </b>

<b>jQuery.get(&quot;debug.txt&quot;, alert);</b>

Помимо трех аргументов, описанных выше, эти две функции могут принимать четвертый необязательный аргумент (передается как третий аргумент, если дополнительные данные отсутствуют), который определяет тип запрашиваемых данных. Этот аргумент влияет на обработку полученных данных перед передачей их функции обратного вызова. Метод

<b>load()</b>
использует тип «html»,
<b>jQuery.getScript()</b>
-тип «script», a
<b>jQuery.getJSON()</b>
-тип «json». Однако функции
<b>jQuery.get()</b>
и
<b>jQuery.post()</b>
более гибкие, чем эти специализированные утилиты, и им можно указать любой из этих типов. Допустимые значения этого аргумента и особенности поведения библиотеки jQuery при его отсутствии описываются во врезке.

Типы данных, поддерживаемые реализацией Ajax в библиотеке jQuery

Функциям

<b>jQuery.get()</b>
и
<b>jQuery.post()</b>
допускается передавать любой из шести типов данных. Кроме того, как описывается ниже, любой из этих типов можно также передавать функции
<b>jQuery.ajax()</b>
в виде параметра
<b>dataType</b>
: