Проблема перенаправления файлов cookie после отправки (форма)
У меня проблема с редиректом, который я пытаюсь добавить на веб-сайт. Я не большой специалист, поэтому прошу доброй помощи.
Перед тем, как показать код, вот вопросы, и как я хотел, чтобы это работало.
Итак, у меня есть форма Aweber, добавленная на мой сайт с двумя полями "Имя" и "Электронная почта" + кнопка "Отправить". В основном, если отправка прошла успешно, пользователь будет перенаправлен на другую страницу, и в него будет добавлен файл cookie.
Что с печеньем?
Хорошо, форма находится на website.com, и если пользователь получает подписку, он перенаправляется на website.com/whwhat.html.
Кроме того, если он подпишется, при следующем входе на website.com он будет автоматически перенаправлен на website.com/whwhat.html.
Итак, у меня есть основная идея, но у меня есть проблема с ней, которая работает правильно.
По сути, теперь он перенаправляет пользователя, даже если он вводит неверные данные, такие как имя: JHKJHKhj и электронная почта: jkhkjhkjhkhjk
Если он вводит эти данные таким образом (неправильно), он должен попасть на страницу с ошибкой, которая установлена Aweber, но теперь он все равно перенаправляется.
Так вот как это должно работать:
- Пользователь вводит данные правильно, он перенаправляется и устанавливает cookie.
- Пользователь вводит детали неправильно, он получает страницу ошибки Aweber по умолчанию, и он не перенаправлен.
Вот мой код сейчас:
> $(document).ready(function() {
> $('#subscribe1').show()
>
> if (!readCookie('hide')) {
> }
>
> else {
> window.location = "http://website/whatever"
> }
>
>
> $('#sendbtn').click(function() {
> window.location = "http://website/whatever"
> createCookie('hide', true, 365)
> return false;
> });
>
> });
>
>
>
> function createCookie(name,value,days) {
> if (days) {
> var date = new Date();
> date.setTime(date.getTime()+(days*24*60*60*1000));
> var expires = "; expires="+date.toGMTString();
> }
> else var expires = "";
> document.cookie = name+"="+value+expires+"; path=/";
> }
>
> function readCookie(name) {
> var nameEQ = name + "=";
> var ca = document.cookie.split(';');
> for(var i=0;i < ca.length;i++) {
> var c = ca[i];
> while (c.charAt(0)==' ') c = c.substring(1,c.length);
> if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
> }
> return null;
> }
>
> function eraseCookie(name) {
> createCookie(name,"",-1);
> }
И вот часть кода Aweber
<form method="post" class="af-form-wrapper" action="http://www.aweber.com/scripts/addlead.pl" >
<div style="display: none;">
<input type="hidden" name="meta_web_form_id" value="522321120" />
<input type="hidden" name="meta_split_id" value="" />
<input type="hidden" name="listname" value="jenselter" />
<input type="hidden" name="redirect" value="http://website.com/whatever" />
<input type="hidden" name="meta_adtracking" value="My_Web_Form" />
<input type="hidden" name="meta_message" value="1" />
<input type="hidden" name="meta_required" value="name,email" />
<input type="hidden" name="meta_tooltip" value="" />
</div>
Спасибо!
1 ответ
Для управления файлами cookie в Google есть легкий файл javascript с именем jcook.js http://code.google.com/p/jcook/downloads/detail?name=jcook.js
скачайте файл и используйте его.
Я приведу небольшой пример для выполнения аналогичной задачи.
Ваша форма будет выглядеть следующим образом для ввода имени и адреса электронной почты.
<form method="POST" action="http://www.aweber.com/scripts/addlead.pl" id="inputForm">
<input name="name" />
<input name="email" />
<button id="authorize">authorize</button>
</form><!--end of the form-->
Ваш JQuery будет
$(document).ready(function(){
$("#authorize").click(function(){
var name = $("input[name='name']").val();
var email = $("input[name='email']").val();
$.ajax({
url: "http://www.aweber.com/scripts/addlead.pl",
data: {name: name, email: email},
async: false,
success: function(data){//when you will get the successful authorization
COOKIES.createCookie("hide", true, 365);//COOKIES IS AN OBJECT IN THE JCOOK.JS TO MANAGE COOKIES
window.location.href = "http://website/whatever";
}
});
});
//if cookie exists
if(COOKIES.readCookie('hide') != null){
window.location.href = "http://website/whatever";
}
});