Когда я отправляю свою форму Netlify, сервер отвечает статусом 200, и я получаю страницу ответа с благодарностью. Однако, когда я проверяю отправку формы в администраторе Netlify, все они пусты. Я проверил свои запросы xhr, и данные отображаются в разделе «params» инструментов разработчика браузера.
Отправленные формы Netlify пустые
Ответы (2)
Отказ от ответственности: я работаю на Netlify.
Когда наша служба хранит пустые представления, он не получил никаких полей из представления, которые были определены в html-версии формы с тем же параметром name
в определении, что и отправка.
Для начала полезно знать, что нашему сервису требуется простая html-версия вашей формы с параметром name
, а также с параметром netlify
или data-netlify=true
; это то, что готовит ваш сайт к тому, чтобы вообще принимать формы, так что вы уже правильно настроили; если вы этого не сделаете, вы получите 404 при POSTing.
После того, как вы разместите это в развертывании и мы правильно проанализируем его, вы увидите имя формы на панели настроек вашего сайта на вкладке «Формы». Обратите внимание, что мы ТАКЖЕ извлекаем все имена полей, которые мы сохраняем и показываем вам в уведомлениях или на панели управления, из этого файла и только из этого файла, поэтому убедитесь, что вы присвоили каждому полю формы все name
в этом html-файле.
Если вы видите форму на своей панели инструментов, но получаете пустую отправку, когда уверены, что данные были отправлены на POST, это, вероятно, имеет одну из трех причин:
- Netlify неправильно обработал имена полей из html-версии вашей формы. Служба будет правильно обрабатывать только поля, которые мы видим в этой HTML-версии во время развертывания.
- Netlify выполняет сопоставление по имени поля во время отправки, поэтому убедитесь, что то, что ваш сайт отправляет нам, совпадает с развернутой html-копией формы. Это происходит автоматически для чистых форм html (без JS), поскольку вы отправляете POST из файла, который является каноническим «определением» полей вашей формы; однако для форм javascript вам нужно позаботиться о том, чтобы имена совпадали. Другими словами, вы не можете позже динамически добавлять новые поля в javascript и отправлять их (Netlify примет все поля, как вы видели, но не будет сохранять их и не уведомлять вас о тех, которые не были обработаны во время развертывания!)
- Еще одна причуда, которая может помешать: наличие нескольких копий формы с одинаковым именем в вашем развертывании. Будет обработан только один, поэтому, если у вас есть ошибочный
<form name=test netlify></form>
в другом html файле (или даже в том же!) - это может быть тот, который мы обрабатываем, а не другая форма, также называемая test. Итак, убедитесь, что вы отправляете только одно определение html вашей формы. Обратите внимание, что некоторые фреймворки, такие как gatsby, перед развертыванием визуализируют ваш jsx в html, а это означает, что если у вас есть определение формы простого html-файла в вашем развертывании, оно может быть обработано вместо копии, созданной gatsby.
В этом сообщении в блоге описывается успешная форма, созданная в приложении React: https://www.netlify.com/blog/2017/07/20/how-to-integrate-netlifys-form-handling-in-a-react-app/
<input type="file" multiple />
и отправил его в форму netlify, только 1-й файл был сохранен, остальные отправленные файлы игнорируются. Не могли бы вы объяснить, как разрешить netlify хранить несколько файлов (в виде массива)? Благодаря тонну!
- person Jeff Tian; 08.09.2018
Я пропустил атрибут "name"
в поле input
.
Каждый ввод в форме должен иметь атрибут «имя». Что-то вроде <input name="email" ...>
или <textarea name="message" ...>
- это то, что вам нужно.