# Forms

> How AjaxPress submits forms without a reload, which forms it leaves alone, and how to opt a form out.

Source: https://arraystory.com/docs/ajaxpress/forms/

With AjaxPress, forms submit without a full page reload, just like links: search, comments, filters, logins, WooCommerce forms, and simple contact forms. The result page appears the same way any other page does, with your loader and transition. There's nothing to set up.

![Search and forms submit without a page reload, and the radio keeps playing.](https://r2.arraystory.com/docs/ajaxpress/forms.mp4?v=87d2cc3139)

## How it works

When a visitor submits a form, AjaxPress sends it in the background with the same method (GET or POST), the same fields, and the button that was clicked. That last part matters for forms with more than one submit button, such as **Update cart** and **Proceed to checkout**: the server still knows which one was pressed.

The page the server answers with is shown in place of the current one, and the address bar updates to match.

## Forms AjaxPress leaves alone

A form submits the normal way, with no involvement from AjaxPress, when:

| The form… | Why |
| --- | --- |
| is already submitted over ajax by its own plugin | Most contact form plugins do this. AjaxPress sees the plugin has handled the submit and stays out of the way |
| has a file upload field | File uploads need a real submission |
| submits to another website, to wp-admin, or to an [excluded address](https://arraystory.com/docs/ajaxpress/exclude-links/) | Same rules as links |
| has `target="_blank"`, `_top` or `_parent` | It's meant to open elsewhere |
| is a login or registration form, and [Full Page Reload on Login & Registration](https://arraystory.com/docs/ajaxpress/full-page-reload-on-login/) is on | You asked for a real page load at sign-in |
| has the `data-ajaxpress-ignore-submit` attribute, or sits inside an element that has it | You opted it out (see below) |

## Opt a form out

Add `data-ajaxpress-ignore-submit` to a form, or to any element around one or more forms, to leave them to the browser:

```html
<form action="/subscribe" method="post" data-ajaxpress-ignore-submit>…</form>

<div class="payment-area" data-ajaxpress-ignore-submit>
  <!-- every form in here submits the normal way -->
</div>
```

Use this for a single form whose plugin needs a real page load, when you'd rather not exclude the whole page.

In a page builder, add it as a custom attribute on the form widget or its section: in Elementor, **Advanced → Attributes** (Elementor Pro); in Bricks, the element's **Attributes**. Enter the name `data-ajaxpress-ignore-submit` and leave the value empty.

## Logins and registration

Sign-in, registration and password forms submit without a reload by default, on `wp-login.php`, WooCommerce **My Account**, and anywhere else. A failed login shows its error in place. See [Full Page Reload on Login & Registration](https://arraystory.com/docs/ajaxpress/full-page-reload-on-login/) for sites whose sign-in needs a real page load.

## Related

- [Form plugins](https://arraystory.com/docs/ajaxpress/form-plugins/): Contact Form 7, WPForms, Gravity Forms, Fluent Forms and builder forms
- [Form problems](https://arraystory.com/docs/ajaxpress/form-problems/): a form submits twice, stops before its message, or loses its data
