Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вместо регистрации-отправка на e-mail (https://javascript.ru/forum/misc/49933-vmesto-registracii-otpravka-na-e-mail.html)

vmazal 04.09.2014 11:14

Вместо регистрации-отправка на e-mail
 
здравствуйте, посдкажите пожалуйста, как переделать код вместо регистрации-отправка на e-mail. Первый день разбираюсь с javascript.

.......	
    }
	
	/*
	if there are errors don't allow the user to submit
	*/
	$('#registerButton').bind('click',function(){
		if($('#formElem').data('errors')){
			alert('Please correct the errors in the Form');
			return false;
		}	
	});
});


вообще хочу переработать вот эту форму как обратной связи, где данные про карту сделать оплату,чтобы пользщователь после оплаты мог отправить только

http://tympanus.net/Tutorials/FancySlidingForm/

tsigel 04.09.2014 11:20

vmazal,
javascript не отправляет письма на емейл, это делает сервер.

vmazal 04.09.2014 11:58

tsigel,
понятно объяснил :victory:

как сделать так,чтобы скрипт сохранил куда-то информацию всю и затем сервер отправил?

у меня есть исходник целиком этой формы

кто поможет, тому наш главный приз-ААВТОМОБИЛЬ!!! 100 рублей на телефон могу положить с зарплаты 10 го =)

+ ещё вопрос :help:

как вообще весь этот скрипт заставить работать на моём вордпрессе?

загрузить файлы с папкам- css , images , файл javascript.js ,а из хтмл вставить в страницу код просто, правильно?

tsigel 04.09.2014 12:04

Сохранить информацию:
var a = "информация";
alert(a);


отправить информацию на сервер:
читайте про AJAX, если с jQuery то так:

$.ajax({
  url: "someUrl",
  method: "post",
  data: {information: a||"информация"},
  success: function () {/* Успех */},
  error: function () {/* Провал */}
})

vmazal 04.09.2014 12:06

tsigel,
а e-mail куда отправить куда писать то?

tsigel 04.09.2014 12:10

vmazal,
var dataToServer = {
    email: document.getElementById("email").value,
    userName: document.getElementById("username").value
  };

$.ajax({
  url: "someServerUrl",
  method: "post",
  data: dataToServer,
  success: function () {/* Успех! Сервер получил Емайл! */},
  error: function () {/* Провал! Что-то пошло не так! */}
});


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

vmazal 04.09.2014 12:14

tsigel,
получается где
email: document.getElementById("email").value,
userName: document.getElementById("username").value


я должен ввести все поля,которые мне необходимо передать на сервер?

тогда получается скрипт возьмет из формы емейл,который ввел пользователь и ему отправит ???

мне то надо на мой ящик все данные формы отослать

tsigel 04.09.2014 12:17

vmazal,
Скрипт не умеет отправлять письма, я это уже писал. Он отправит данные с формы на сервер, а на сервере вы можете отправить письмо с этими данными куда хотите, себе, пользователю, друзьям и т.д.

+ мало написать на клиенте отправку данных на сервер. На сервере надо данные принять, обработать...

vmazal 04.09.2014 12:19

tsigel,
хорошо, а куда на сервер он отправляет? в файл какой-то или куда?

и как сообщить скрипту, что отправлять на сервер? вот в этих полях,как я понял?

email: document.getElementById("email").value,
userName: document.getElementById("username").value

tsigel 04.09.2014 12:20

vmazal,
Здравствуйте!

Судя по вашему сообщению, вы ну совсем не знаете javascript.

Освойте основы языка и вопрос отпадет сам, полностью или частично.
А с чем не справитесь - поможем.

На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/

Задавайте конкретные вопросы по ходу дела.

tsigel 04.09.2014 12:22

Вы задаете вопросы из серии "А как ходить?". Либо пишите в раздел "Работа", где вам сделают за деньги, либо приложите усилия к тому чтобы что-то сделать. Я написал вам почти все что надо сделать на клиенте. Потрудитесь хотябы понять что я написал, как и что оно делает. Не будет получаться - вам обязательно помогут.

vmazal 04.09.2014 12:23

tsigel,
ок! хорошо! да, яваскрипт я вообще не знаю,первый раз с ним дело имею

/*
	if there are errors don't allow the user to submit
	*/
	$('#registerButton').bind('click',function(){
		if($('#formElem').data('errors')){
			alert('Please correct the errors in the Form');
			return false;
		else
                        var dataToServer = {
                        email: document.getElementById("email").value,
                        userName: document.getElementById("username").value
                };
 
                $.ajax({
                        url: "someServerUrl",
                        method: "post",
                        data: dataToServer,
                        success: function () {/* Успех! Сервер получил Емайл! */},
                        error: function () {/* Провал! Что-то пошло не так! */}
                });

}


еще вопрос-так сработает или нет?

vmazal 04.09.2014 12:25

tsigel,
Спасибо! Я Вас понял. Сейчас буду разбираться,как разберусь-напишу в личку.

Просто мне надо реализовать на сайте форму отправки сообщений - платных-бесплатных, сам сайт на вордпрессе, мне посоветовали на php написать, но php я не знаю, javascript тоже не знаю,но решил на нём, он как-то попонятнее показался.

tsigel 04.09.2014 12:26

vmazal,
Нет, вы допустили синтаксическую ошибку

tsigel 04.09.2014 12:27

/*
	if there are errors don't allow the user to submit
	*/
	$('#registerButton').bind('click',function(){
		if($('#formElem').data('errors')) {
			alert('Please correct the errors in the Form');
			return false;
		} else {
                        var dataToServer = {
                             email: document.getElementById("email").value,
                             userName: document.getElementById("username").value
                         };
 
                         $.ajax({
                             url: "someServerUrl",
                             method: "post",
                             data: dataToServer,
                             success: function () {/* Успех! Сервер получил Емайл! */},
                             error: function () {/* Провал! Что-то пошло не так! */}
                       });
          }
}

tsigel 04.09.2014 12:28

Учтите, что на сервер придут толко поля перечисленные в объекте "dataToServer", то есть сейчас это емэйл и имя пользователя. Наверно вам нужно больше полей и вы можете добавить их по аналогии

vmazal 04.09.2014 12:49

tsigel,
вижу. читаю учебник.

да, про поля эти я понял

vmazal 04.09.2014 15:15

tsigel,
не подскажешь, почему получилась такая форма? сдвинутая немного и последнее поле нормально не фунцкионирует
и правила проверки перестали работать вообще

http://vmazal.mcdir.ru/18-2

файл скрипта и стиля загрузил, в хтмл коде прописал - создал в форме поле для хтмл и в него засунул код формы, так и не понял куда на сервер отправляет форма данные, пока разбираюсь..

tsigel 04.09.2014 15:23

Смотрите консоль ошибок (желательно в хроме). Открыть консоль - Ф12 (в маке - "альт + комонд + i")

vmazal 04.09.2014 15:27

смотрел - он ругается на functions.js из темы и на админ бар.js, моя форма то не при чем получается

tsigel 04.09.2014 15:45

Из консоли есть ссылки на файлы. там указано в каком файле ошибка и причину ошибки. Выложите проблемный код.

vmazal 04.09.2014 15:50

// Enable menu toggle for small screens.
	( function() {
		var nav = $( '#primary-navigation' ), button, menu;
		if ( ! nav ) {
			return;
		}

		button = nav.find( '.menu-toggle' );
		if ( ! button ) {
			return;
		}

		// Hide button if menu is missing or empty.
		menu = nav.find( '.nav-menu' );
		if ( ! menu || ! menu.children().length ) {
			button.hide();
			return;
		}

		$( '.menu-toggle' ).on( 'click.twentyfourteen', function() {
			nav.toggleClass( 'toggled-on' );
		} );
	} )();


На 20,21 строчке ошибки, Undefined is not a function говорит
Находится ошибка в файле functions.js от стандартной темы Wordpress


"undefined" != typeof jQuery ? ("undefined" == typeof jQuery.fn.hoverIntent && !function(a) {
    a.fn.hoverIntent = function(b, c, d) {
        var e = {interval: 100,sensitivity: 7,timeout: 0};
        e = "object" == typeof b ? a.extend(e, b) : a.isFunction(c) ? a.extend(e, {over: b,out: c,selector: d}) : a.extend(e, {over: b,out: b,selector: c});
        var f, g, h, i, j = function(a) {
            f = a.pageX, g = a.pageY
        }, k = function(b, c) {
            return c.hoverIntent_t = clearTimeout(c.hoverIntent_t), Math.abs(h - f) + Math.abs(i - g) < e.sensitivity ? (a(c).off("mousemove.hoverIntent", j), c.hoverIntent_s = 1, e.over.apply(c, [b])) : (h = f, i = g, c.hoverIntent_t = setTimeout(function() {
                k(b, c)
            }, e.interval), void 0)
        }, l = function(a, b) {
            return b.hoverIntent_t = clearTimeout(b.hoverIntent_t), b.hoverIntent_s = 0, e.out.apply(b, [a])
        }, m = function(b) {
            var c = jQuery.extend({}, b), d = this;
            d.hoverIntent_t && (d.hoverIntent_t = clearTimeout(d.hoverIntent_t)), "mouseenter" == b.type ? (h = c.pageX, i = c.pageY, a(d).on("mousemove.hoverIntent", j), 1 != d.hoverIntent_s && (d.hoverIntent_t = setTimeout(function() {
                k(c, d)
            }, e.interval))) : (a(d).off("mousemove.hoverIntent", j), 1 == d.hoverIntent_s && (d.hoverIntent_t = setTimeout(function() {
                l(c, d)
            }, e.timeout)))
        };
        return this.on({"mouseenter.hoverIntent": m,"mouseleave.hoverIntent": m}, e.selector)
    }


на первой строчке ошибка, тоже undefined is not a fucntion
находится в файле admin-bar.min.js

vmazal 04.09.2014 15:55

var dataToServer = {
                             	userName: document.getElementById("username").value,
				email: document.getElementById("email").value,
                               	country: document.getElementById("country").value,
				name: document.getElementById("name").value,
				newsletter: document.getElementById("newsletter").value,
				updates: document.getElementById("updates").value,               
				tagname: document.getElementById("tagname").value,              	                             
                         };


на 7 строке ошибка с апдейтс гвоорит считать не может

исправил на check1 и check2 , то бишь на id, а тто был label указан случайно, теперь другая ощшибка

GET http://vmazal.mcdir.ru/someServerUrl...es=on&tagname= 404 (Not Found) jquery.min.js:formatted:2702
c.extend.ajax jquery.min.js:formatted:2702
(anonymous function) sliding.form.js:153
c.event.handle jquery.min.js:formatted:997
j.handle.o


а anonymous function он про вот эту гвоорит

$.ajax({
                             url: "someServerUrl",
                             method: "post",
                             data: dataToServer,
                             success: function () {/* Успех! */},
                             error: function () {/* Неудача! */}
                       });

tsigel 04.09.2014 17:04

Цитата:

GET http://vmazal.mcdir.ru/someServerUrl...es=on&tagname= 404 (Not Found)
У вас на сервере должен быть php файл, который обрабатывает запрос, расположенный по "someServerUrl". Например туда можно написать "sendEmail.php" и запрос будет приходить в файл sendEmail.php расположенный наверно в корне сервера, хотя не факт)

vmazal 04.09.2014 17:24

tsigel,
понял! сейчас попробую так,спасибо!

vmazal 05.09.2014 10:46

tsigel,
запрос должен приходить в этот sendEmail.php,который я создал, в корне сервера лежит,да и команда видно,что на файл,что в корне ссылается, но он пуст,да и вообще кнопка теперь просто нажимается и ничего не происходит, права доступа на php пустой выставлены.

интересует ещё,почему форма так сбилась сама-кривая стала, но это уж потом

tsigel 05.09.2014 11:28

Одна из ошибок которые у вас есть в консоли вероятно новая. Ошибки в js ведут к прекращению выполнения потока, что в свою очередь ведет к тому что некоторые вещи которые должны были выполниться после места с ошибкой - не выполняются. То есть вероятно что валидация форм и её расстановка были сделаны с помощью jQuery UI и ошибка в коде не дает этим компонентам полноценно проинициализироваться. Из-за этого не корректное отображение формы и не работает валидация. Вообще пока вы не устраните ошибки js можете ловить неожиданные глюки, так что в первую очередь я рекомендую вам разобраться с ошибками. Только потом уже отлаживать AJAX связь клиента с сервером.

vmazal 05.09.2014 13:23

tsigel,
пытаюсь устранить.. это может быть связано с тем,что я размещаю эту форму на странице под движком wordpress'a , есть вообще информация о том,может ли wordpress с этим справиться?

заметил особенность- когда хтмл код размещаю в виджет создания формы, а форму на страницу - то по высоте и ширине форма нормальная, не работает проверка заполненности полей, форма сама кривая, но работает ползунок выбора цены и пишет значения

когда размещаю просто на странице кодом, то проверка формы работает, ширина и высота пляшет невероятно, сама форма более менее ровная, за исключением того,что почему-то на вкладке оплата под оплатой выскакивает отправить,хотя она последняя , и ползунок цены показывает постоянно значение 1,куда бы его не двигал

вот форма работает тут http://vmazal.mcdir.ru/123-2

vmazal 05.09.2014 17:34

tsigel,
создал отдельную html страницу,думаю потом её украсить
но форма не отправляет никаких данных, вот она

http://vmazal.mcdir.ru/index0.html

tsigel 05.09.2014 18:09

https://api.monosnap.com/image/downl...3pu4PJcZU9qBmL
Отсылаются, вы даже обрабатываете запрос.

vmazal 08.09.2014 11:11

tsigel,
спасибо Вам огромное за участие в решении моей задачи:thanks:

в php файле лежит такой код

$sendto   = "мой ящик на gmail-е"; 
$usermail = $_POST['email'];
$content  = nl2br($_POST['msg']);
$subject  = "New Feedback Message";
$headers  = "From: " . strip_tags($usermail) . "\r\n";
$headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html;charset=utf-8 \r\n"; 
$msg  = ""; 
$msg .= "<h2 style="font-weight: bold; border-bottom: 1px dotted #ccc;">New User Feedback</h2>\r\n"; 
$msg .= "<strong>Sent by:</strong> ".$usermail."\r\n";  
$msg .= "<strong>Message:</strong> ".$content."\r\n";  	$msg .= "";


но на почту ничего не приходит

tsigel 08.09.2014 11:16

vmazal,
Честно говоря я не шарю в php, так что этот вопрос стоит задать в другой теме или на другом форуме. Тут я вам не помогу.

vmazal 08.09.2014 11:17

tsigel,
ок!!! спасибо огромное

vmazal 08.09.2014 11:30

tsigel,
ещё последний вопрос - чтобы на сайте самом работала форма нормально раскомменитровал div-ы, style в них прописал, размер (высота) формы изменилась, теперь как надо, но форма криво перелистывается все равно, ползунок выбора стоимости не работает, и отправка вообще исчезла - http://vmazal.mcdir.ru/18-2
с чем такое может быть связано не подскажешь?

tsigel 08.09.2014 11:56

vmazal,
Подскажу :)

Как вы говорили, на сайте вордпресс. В нем есть jQuery. Он очень старый (версии 1.4.2) и у него нет многих методов которыми вы пользуетесь (например в нем нет метода "on"). Советую вам почитать о jQuery.noConflict(), и подключить разные версии jQ для вордпресса и для себя.

vmazal 08.09.2014 12:14

tsigel,
ок! 1.5.2 попробую подключить и почитаю..
отдуши за помощь,пойду разбираться, осталось немного)

vmazal 08.09.2014 17:43

tsigel,

с кособокостью формы разобрался,единственное,чт о не работает-ползунок выбора цены, неясно почему...
отправляются пустые сообщения на почту через php с указанием e-mail оптравителя

меня интересует вообще вот что-как вы узнавали , отправляются данные или нет,когда ещё ссылку скидывали?

tsigel 08.09.2014 17:59

В браузерной консоли есть вкладка нетворк, которая показывает всю сетевую активность страницы. Рекомендую пользоваться отладчиком хрома.

vmazal 09.09.2014 11:16

tsigel,
отладчиком хрома и пользуюсь всегда)

он отправляет только с хтмл страницы,а со страницы вдрдпресса не потравляет,ошибку пишет

tsigel 09.09.2014 13:28

в смысле? какую ошибку?


Часовой пояс GMT +3, время: 03:03.