Начнем с формы. Описание файла js и формы отпраки тут http://ftask.ru/2016/ajax….. . Там для Yii. Суть одна и та же.
Вот форма, которую я использовал в последнем проекте на bitrix
1 2 3 4 5 6 7 8 9 |
<form method="post" enctype="multipart/form-data" id="formMain" name="formMain"> <input type="hidden" name="url" value="<?=$_SERVER['REQUEST_URI'] ?>"> <input name="name" class="name" autocomplete="off" placeholder="Укажите Ваше имя"> <input name="phone" class="phone" autocomplete="off" placeholder="Телефон для связи"> <input name="email" class="email" autocomplete="off" placeholder="Ваш e-mail"> <input name="comment" class="comment" autocomplete="off" placeholder="Ваш вопрос"> <input style="border-width:0px; padding-left:0px;" name="file" type="file"> <input type="submit" class="btn_call" name="submit" value="заказать звонок"> </form> |
js код для формы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
$("form#formMain").submit(function () { // Получение ID формы var formID = $(this).attr('id'); // Добавление решётки к имени ID var formNm = $('#' + formID); var form = $(this); // объект формы(он в себя собирает все поля и файлы) var formData = new FormData(form[0]); // Значение нуль в скобках обязательно $.ajax({ type: "POST", url: '/contact/mail.php', // data: formNm.serialize(), processData: false, contentType: false, data: formData , success: function (data) { //действие при успехе }, error: function (jqXHR, text, error) { } }); return false; }); |
Сам php файлик /contact/mail.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); $SITE_ID = 's1'; $EVENT_TYPE = 'FEEDBACK_FORM'; //убираем первый слешь в урле- вам не обязательная часть :) $url=''; if(isset($_POST['url'] )&& !empty($_POST['url'])){ $url=$_POST['url']; if($url[0]=='/'){ $url= substr( $url, 1); } } $arMailFields = array( 'NAME' => $_POST['name'], 'PHONE' => $_POST['phone'], 'EMAIL' => $_POST['email'], 'MESSAGE' => $_POST['comment'], 'URL' => $url, //сюда добавил урл ); $mess="Спасибо! <br>Мы свяжемся с Вами в ближайшее время"; $arMailFields_clear=array(); foreach ($arMailFields as $key => $value) { $input_text = strip_tags($value); $input_text = htmlspecialchars($input_text); //$input_text = mysql_escape_string($input_text); $arMailFields_clear[$key]=$input_text; } //собираем файлы из загрузки в массив . $files=array(); foreach ($_FILES as $file){ if (!empty($file['tmp_name'])) { $files[]=CFile::SaveFile($file,'form'); } } CEvent::Send($EVENT_TYPE, $SITE_ID, $arMailFields_clear, 'Y','',$files); echo $mess; |
Обратите внимание на CEvent::Send($EVENT_TYPE, $SITE_ID, $arMailFields_clear, ‘Y’,»,$files); Эта функция отправляет только прикрепленные в битрикс файлы.
Прочитайте документацию по последним двум параметрам. ‘Y’,»,$files .
По форме обратить внимание
1 2 |
enctype="multipart/form-data" <input type="hidden" name="url" value="<?=$_SERVER['REQUEST_URI'] ?>"> |
по js
var form = $(this);
// объект формы(он в себя собирает все поля и файлы)
var formData = new FormData(form[0]);