php Примерработысформойбитриксаякс(модуль)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php Примерработысформойбитриксаякс(модуль)相关的知识,希望对你有一定的参考价值。
/* ajax форма */
$('.js_ajax-form').submit(function () {
var form = $(this),
formData = new FormData(form[0]),
xhr = new XMLHttpRequest();
form.find('.js_submit-button').addClass('disabled').attr("disabled", true);
xhr.open("POST", "/ajax/sendForm.php", true);
xhr.send(formData);
xhr.onreadystatechange = function() {
if (xhr.readyState != 4) return;
if (xhr.status != 200) {
console.log(xhr.status + ': ' + xhr.statusText);
} else {
var answer = JSON.parse(xhr.responseText);
if (answer.status) {
form.find('.js_form-errors').html("");
form.find('.js_form-success').html(answer.success);
setTimeout(function() {
form[0].reset();
form.find('.js_form-success').html("");
$('.modal').modal('hide')
}, 3000);
} else {
form.find('.js_form-errors').html(answer.errors);
}
form.find('.js_submit-button').removeClass('disabled').attr("disabled", false);
captchaArray.forEach(function(item) {
grecaptcha.reset(item);
});
}
};
return false;
});
/* ajax форма */
<?php
use Bitrix\Main\Context;
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
$arAnswer['status'] = false;
$request = Context::getCurrent()->getRequest();
if (!CModule::IncludeModule("form"))
die();
$server = Context::getCurrent()->getServer();
$arRequest['recaptcha'] = $request->getPost("g-recaptcha-response");
$arRequest['addr'] = $server->getServerAddr();
$errors = array();
$arValues = array();
$webFormID = $request->getPost("WEB_FORM_ID");
if (CForm::GetDataByID($webFormID, $form, $questions, $answers)) {
foreach ($answers as $key => $answer) {
$answerKey = 'form_'.$answer[0]['FIELD_TYPE'].'_'.$answer[0]['ID'];
$arValues[$answerKey] = $request->getPost($answerKey);
if ( ($questions[$key]['REQUIRED'] == 'Y') && (strlen(trim($arValues[$answerKey])) == 0) )
$errors[] = 'Заполните поле "'.$questions[$key]['TITLE'].'"';
}
}
foreach ($_FILES as $key => $arFile) {
$arValues[$key] = $arFile;
}
if (!$request->getPost('policy'))
$errors[] = 'Необходимо согласиться с условиями «Пользовательского соглашения»';
if (!takeCaptcha($arRequest['recaptcha'], $arRequest['addr']))
$errors[] = 'Пройдите проверку на робота';
if (count($errors) > 0) {
$arAnswer['errors'] = '<p>'.implode('<br />', $errors).'</p>';
} else {
if ($RESULT_ID = CFormResult::Add($webFormID, $arValues)) {
if (CFormResult::Mail($RESULT_ID)) {
$arAnswer['status'] = true;
$arAnswer['success'] = '<p>Ваша заявка отправлена!</p>';
} else {
$arAnswer['errors'] = '<p>Ошибка при отправке сообщения! Обратитесь к администратору сайта</p>';
}
} else {
$arAnswer['errors'] = '<p>Ошибка при создании сообщения! Обратитесь к администратору сайта</p>';
}
}
echo json_encode($arAnswer);
function takeCaptcha($hash, $addr) {
$request = new \Bitrix\Main\Web\HttpClient();
$post = $request->post("https://www.google.com/recaptcha/api/siteverify", Array(
"secret" => "6Ldm4zQUAAAAAKA9ow4p-GaKaaFE439elzCrVAdW",
"response" => $hash,
"remoteip" => $addr
));
$post = json_decode($post);
if ($post->success == 'true') {
return true;
}
return false;
}
以上是关于php Примерработысформойбитриксаякс(модуль)的主要内容,如果未能解决你的问题,请参考以下文章
php Функцияскачиванияфайла$ b $bПростоотправляемнаурлсобработчиком,передаваяссылкунафайл
python РаботысданнымипосредствомDjangoORMизстороннихфайлов
php Полезныеклассыбитриксаифункиидляработысфайлами
text Решениепроблемысфайлом房东наноуте
php Фиксированныйблок,которыйпоявляетсякакмагия
html Примерныйспособмикроразметкиконтактов