ColdFusion - переменные формы пустые после отправки формы
Мой вопрос ссылается на следующий вопрос / ответ, представленный в этом сообщении stackru: Переменные формы не отображаются после отправки формы. Холодный синтез
Я хотел прокомментировать в вышеупомянутом посте, но мне не хватает очков репутации. Я вижу ответ Сэмюэля Дили выше, указывающий, что использование cflocation или location.replace() может привести к тому, что переменные формы не будут отображаться. Это именно то, что происходит в моем сценарии.
У меня есть простая форма регистрации заявки. После отправки формы данные формы отправляются на страницу с именем addCampaign.cfm. addCampaign.cfm содержит код, который будет записывать регистрационные данные в базу данных. После записи информации о регистрации в базу данных, я проверяю, что информация была записана в базу данных. Затем я перенаправляю пользователя на определенную страницу, если регистрация прошла успешно, а если не удалась, то перенаправляю обратно на страницу формы регистрации с соответствующим сообщением об ошибке.
Я попытался использовать оба для перенаправления, и попытался с помощью javascript location.replace(), оба приводят к одной и той же проблеме.
Проблема, с которой я сталкиваюсь, заключается в том, что:
1) Перенаправление никогда не происходит
2) Я использую для отображения структуры, но она перечисляет ее как пустую
3) Я удалил cflocation и location.replace() и могу убедиться, что мои элементы формы существуют в структуре формы.
4) Данные формы записываются в базу данных, что очень странно, учитывая, что структура формы отображается как пустая.
Я не понимаю, почему структура формы пуста, когда данные записываются в базу данных, и, кроме того, я не знаю, почему перенаправление не работает. Кто-нибудь может дать некоторые разъяснения о том, почему это происходит?
1 ответ
Рассмотрим этот код в одном файле
<cfif cgi.request_method EQ "post">
<cfdump var="#form#">
<!--- More importantly, DB inserts --->
</cfif>
<form method="post" action="?">
<!--- Lots of other fields go here too --->
<input type="submit" name="btnSubmit" id="btnSubmit" value="OK" />
</form>
Если вы делаете это таким образом, вам не нужно беспокоиться о том, что данные будут перенаправлены каким-либо образом. Вы уже на той странице, которую хотите. action="?"
в основном означает отправить на то же поле, что и я уже на. Обратите внимание, что поведение файла отличается на GET
против POST
,