Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите отправить данные в php (https://javascript.ru/forum/misc/66178-pomogite-otpravit-dannye-v-php.html)

karakym 29.11.2016 16:31

Помогите отправить данные в php
 
Доброго времени суток, есть такой jquery:
// Form Submit
	{
		requestForm.on('submit', function(e){
			e.preventDefault();
			if(!fullNameValidate() && !phoneNumberValidate() && !emailValidate()){

				$('#request-demo').removeClass('success error');
				$('#request-demo').addClass('loading');

				$('html, body').animate({scrollTop: $('#request-demo').offset().top - 150}, 1000);
				var fullNameVal = $('#fullName').val();
				var phoneNumberVal = $('#phoneNumber').val();
				var emailVal = $('#email').val();
				var messageVal = $('#message').val();
				var dataString =	'fullNameVal=' + fullNameVal +
					'&jobTitleVal=' + jobTitleVal +
					'&organizationVal=' + organizationVal +
					'&phoneNumberVal=' + phoneNumberVal +
					'&emailVal=' + emailVal +
					'&messageVal=' + messageVal;
				var pushBulletString =	'Имя: ' + fullNameVal +
					'\nНомер телефона: ' + phoneNumberVal +
					'\nEmail: ' + emailVal +
					'\nСообщение: ' + messageVal;
				$.ajax({
					type: "POST",
					url: "./form.php",
					crossDomain: true,
					data: dataString,
					success: function(response) {
						if(response.state === 'success'){ // Request added
							$('.success-block .user-name').text(response.fullName);
							$('#request-demo').removeClass('loading');
							$('#request-demo').addClass('success');
							pushBullet(pushBulletString);
						}else if(response.state === 'requested'){ // User Already Requested
							$('.requested-block .user-name').text(response.fullName);
							$('.requested-block .email').text(response.email);
							$('#request-demo').removeClass('loading');
							$('#request-demo').addClass('requested');
						}else{ // Some kind of error
							$('#request-demo').removeClass('loading');
							$('#request-demo').addClass('error');
							setTimeout(function(){ $('#request-demo').removeClass('error'); }, 2000);
						}
						// setTimeout(function(){ $('#request-demo').removeClass('success'); }, 2000);
					},
					error: function(error){
						console.log(error);
						$('#request-demo').removeClass('loading');
						$('#request-demo').addClass('error');
						setTimeout(function(){ $('#request-demo').removeClass('error'); }, 2000);
					}
				});
			}
		})
	}

Но потерялся php файл который получает данные и отправляет на почту.
Помогите его правильно составить.

karakym 29.11.2016 16:43

Пробую вот такой php:
<?php
$addresses = array(
    'karakymg@gmail.com',
);
 
if (isset($_REQUEST['fullNameVal'])){
        $mess = $_REQUEST['messageVal'];
        $fname = $_REQUEST['fullNameVal'];
        $phone = $_REQUEST['phoneNumberVal'];
        $from = $_REQUEST['emailVal'];
        $send = "Здравствуйте меня зовут: ".$fname."\r\nПозвоните мне на номер: ".$phone."\r\nЯ оставил вам сообщение: ".$mess;
        $to= implode(', ', $addresses);
        $subject = "Заказ с сайта targo.in.ua";
        $headers = "From: $from\r\nReplay-To: $from\r\nContent-type: text/plain; charset=utf-8\r\n";
        mail($to, $subject, $send, $headers);
}
?>

но выдает ошибку.

karakym 29.11.2016 16:50

изначально url php файла стоял такой:
http://anastawfeek.com/itworxhub/process.php
но если туда зайти там отображается только эта строчка:
{"state":"fail","error":"More informations required."}{"state":"requested","firstName":"Shared","email":""}

Исходник к сожаленью не увидеть(

laimas 30.11.2016 01:27

Бедлам в коде со строки 11 и по 20 можно спокойно выбрасывать и заменить на var dataString = this.serialize();, и на сервере оперировать ключами, которые есть имена полей формы.
Что это такое pushBullet(pushBulletString) и нужно ли не знаю.

crossDomain: true, это для кого? Отправка то на свой домен, каким боком нужен crossDomain?

$_REQUEST - это данные которые могут перекрываться GET, POST, COOKIE данными и в той последовательности, в которой они прописаны в конфигурации. Другими словами клиент может сделать произвольную подставу. Если вы контролируете процесс, ожидаете данные пришедшие методом POST, то и проверять нужно не $_REQUEST, а $_POST.

По самой отправке почты - тревожим Гугл, спрашивая "PHP отправка почты" и читаем как правильно оформляется почтовое отправление, ибо так как это у вас написано делать нельзя. При этом отправка может быть как функциями mail/mb_send_mail, так и SMTP.


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