@Aleksander911

Почему происходит отправка пустой формы ajax?

Привет, всем.
Есть обычная форма:
<form id="modul-form_10" data-form-validate="true">
....
</form>

Для оправки форм в битрикс24 использую такой php:
<?
define('CRM_HOST', 'my_host.bitrix24.ru'); // Ваш домен CRM системы
define('CRM_PORT', '443'); // Порт сервера CRM. Установлен по умолчанию
define('CRM_PATH', '/crm/configs/import/lead.php'); // Путь к компоненту lead.rest
 
define('CRM_LOGIN', 'my_login'); // Логин пользователя Вашей CRM по управлению лидами
define('CRM_PASSWORD', 'my_password'); // Пароль пользователя Вашей CRM по управлению лидами
 
$tema = $_POST['title'];; //получаем значение полей из формы и записываем их в переменные методом POST 

$name = $_POST['name'];
$phone = $_POST['field'];
$promo = $_POST['promo'];
$size = $_POST['size'];
$sum = $_POST['sum'];

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
	$leadData = $_POST['DATA'];
	
	$postData = array(
		'TITLE' => $tema,		
		'NAME' => $name,
		'PHONE_MOBILE' => $phone,
		'UF_CRM_1539439128' => $promo,
		'UF_CRM_1539440067' => $size,
		'OPPORTUNITY' => $sum,
		
	);

	if (defined('CRM_AUTH'))
	{
		$postData['AUTH'] = CRM_AUTH;
	}
	else
	{
		$postData['LOGIN'] = CRM_LOGIN;
		$postData['PASSWORD'] = CRM_PASSWORD;
	}

	$fp = fsockopen("ssl://".CRM_HOST, CRM_PORT, $errno, $errstr, 30);
	if ($fp)
	{
		$strPostData = '';
		foreach ($postData as $key => $value)
			$strPostData .= ($strPostData == '' ? '' : '&').$key.'='.urlencode($value);

		$str = "POST ".CRM_PATH." HTTP/1.0\r\n";
		$str .= "Host: ".CRM_HOST."\r\n";
		$str .= "Content-Type: application/x-www-form-urlencoded\r\n";
		$str .= "Content-Length: ".strlen($strPostData)."\r\n";
		$str .= "Connection: close\r\n\r\n";

		$str .= $strPostData;

		fwrite($fp, $str);

		$result = '';
		while (!feof($fp))
		{
			$result .= fgets($fp, 128);
		}
		fclose($fp);

		$response = explode("\r\n\r\n", $result);

		$output = '<pre>'.print_r($response[1], 1).'</pre>';
	}
	else
	{
		echo 'Не удалось подключиться к CRM '.$errstr.' ('.$errno.')';
	}
}
else
{
}
?>


И ajax с валидацией
$("form[data-form-validate='true']").each(function() {
	$(this).validate({
		 
		errorPlacement: function(error, element) {
            if (element.attr("name") == "checkeds") {

                error.insertAfter(element.parent());
            } else {
                error.insertAfter(element);
            }
            return true;
        },
		highlight: function(element) {
			$(element).parent().addClass("error-check");
		},
		unhighlight: function(element) {
			$(element).parent().removeClass("error-check");
		},
         rules: {
             name: {
                 required: true,
                 minlength: 2
             },
            
			 field: {
			  required: true,
			  number: true,
			  minlength: 11
			},
			checkeds: {
                required: true
            },
             subject: {
                 required: true
             }
         },
		  messages: {
			 name: {
			 required: "Не заполненное поле",
			 minlength: "Введите не менее 2-х символов"
			 },
			 field: {
			 required: "Не заполненное поле",
				minlength: "11-значный номер телефона",
				number:"Введите в формате 89876543210"
			 },
			 checkeds: {
                required : ""
            },
			
			 },
      submitHandler: function (form) {
		var formID = $(this).attr('id'),
		 formNm = $('#' + formID);
		 $.ajax({
			type: "POST",
			url: 'integration.php',
			data: formNm.serialize(),
			success: setTimeout((function(data){
					if (data == 'yes'){
						location.href = "http://my_site/thank-you"
						
						}
					}).bind(this), 1500, "yes")	,
			error: function (jqXHR, text, error) {
		 $(formNm).html(error);
		 }
		 });
		 return false;
	 }
     });
     });

Но форма в битрикс24 приходит пустая. Без ajax запроса:
<form id="modul-form_10" data-form-validate="true" action="integration.php" method="post">
...
</form>

всё нормально оправляется. Подскажите, в чем может быть проблема?
  • Вопрос задан
  • 209 просмотров
Решения вопроса 1
@Aleksander911 Автор вопроса
Решил вопрос. Может кому нибудь пригодится, подправил js:

$("form").each(function() {
	    var formID = $(this).attr('id'),
		formNm = $('#' + formID + '[data-form-validate="true"]');
	 
	formNm.validate({		 
		errorPlacement: function(error, element) {
            if (element.attr("name") == "checkeds") {

                error.insertAfter(element.parent());
            } else {
                error.insertAfter(element);
            }
            return true;
        },
		highlight: function(element) {
			$(element).parent().addClass("error-check");
		},
		unhighlight: function(element) {
			$(element).parent().removeClass("error-check");
		},
         rules: {
             name: {
                 required: true,
                 minlength: 2
             },
            
			 field: {
			  required: true,
			  number: true,
			  minlength: 11
			},
			checkeds: {
                required: true
            },
             subject: {
                 required: true
             }
         },
		  messages: {
			 name: {
			 required: "Не заполненное поле",
			 minlength: "Введите не менее 2-х символов"
			 },
			 field: {
			 required: "Не заполненное поле",
				minlength: "11-значный номер телефона",
				number:"Введите в формате 89876543210"
			 },
			 checkeds: {
                required : ""
            },
			
			 },
       submitHandler: function (form) {	
		
		 $.ajax({
			type: "POST",
            url: 'integration.php',           
            data: formNm.serialize(),
            success: setTimeout((function(data){
					if (data == 'yes'){
						location.href = "http://my_site/thank-you""
						
						}
					}).bind(this), 1500, "yes")
			
		 });
		  
       
        }  	   
	
     });
     });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы