@b_efimenko

Почему не отправляется форма?

Взял доработать скопированный сайт, уже даже жалею.
Есть форма:
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
    <title>Заказать Кухн. на заказ лдсп</title>
    <link rel="stylesheet" href="../css/reveal.css">
    <link rel="stylesheet" href="../css/default.css">
    <link rel="stylesheet" href="../css/mform.css">
    <script type="text/javascript" src="../js/jquery-1.6.min.js"></script>
    <script type="text/javascript" src="../js/jquery.reveal.js"></script>
    <script type="text/javascript" src="../js/mform.js"></script>
    <style>
        body {
            background: url("./images/form_bg.png") 0 -20px;
        }
        .centered form label {
            color: #fff !important;
            text-align: center;
            font-size: 15px;
            font-style: italic;
            font-family: Candara, sans-serif;
            font-weight: bold;
        }
        .centered form .progressimg {
            width: 50px;
            margin: 0 auto;
            margin-top: 15px;
        }
        fieldset {
            margin: 0px auto 0 auto !important;
            padding: 0 !important;
            height: auto !important;
            width: 246px;
            background: none !important;;
        }
        fieldset h1 {
            margin: 0 0 15px 0 !important;
            color: #fff !important;
            text-align: center;
            font-size: 20px;
        }
        form {
            margin: 0 auto;
            width: 232px !important;
        }
        form ul {
            height: 150px;
        }
        form li {
            margin: 0;
            padding: 0;
            height: 30px;
            background-position: 0 12px !important;
            text-align: right;
        }
        form li.mail {
            background-position: 0 -20px !important;
        }
        form li.phone {
            background-position: 0 -52px !important;
        }
        form li input {
            margin: 0 !important;
        }
        form li.button {
            text-align: center;
        }
        .footer textarea {
            width: 272px;
            height: 100px;
        }
    </style>
</head>



<body class="form" marginwidth="0" marginheight="0">
<div class="wrapper">
    <div class="footer">
        <div class="report">
            <div class="order">
                <fieldset>
                    <div class="centered">
                        <h1>Оставить заявку на просчет мебели.</h1>
                        <form id="g_sendf">
                            <label class="label_to" style="display:none;" id="8CDF78DE-FB13-1776-40B8-506D23C1FA29">Покупка Кухня ЛДСП №7
</label>
                            <label class="label_sndok" style="display:none;" id="2DA2936B-E8F1-9D44-5099-66161582EB32">
                                Cообщение успешно отправлено!<br id="0F794D7B-3C10-A154-EC96-785C029CFF5F"><center id="461CF24A-62D5-8C8D-18D1-3D95D714C4C0"> Скоро с вами свяжется наш специалист.</center>
                            </label>

                            <div class="progressimg" style="display:none;" id="CB0B3702-75C8-E8DC-6EF4-0DECC02F3533"><img src="../images/loader.gif" border="0" id="D422601C-38AC-3064-90C4-057D6C54631B"></div>
                            <ul id="D62F1BA5-8DC3-37D9-410A-68F58C83B600">
                                <li id="8148685D-DF22-3D1E-2CCF-83B6D7C9E02A">
                                    <input name="name" value="Имя" defval="Имя" type="text" require="true" title="Это поле обязательно для заполнения" onfocus="changeColorFocus(this);" onblur="changeColorBlur(this, &#39;Имя&#39;);" id="2E2D4563-F335-8F10-A735-EE33277DB4CB" sname="Имя">
                                </li>
                                <li class="phone" id="53DF55A5-51C8-76AF-00AE-B33053AAA42B">
                                    <input name="phone" value="Телефон" sname="Телефон:" defval="Телефон" require="true" title="Это поле обязательно для заполнения" type="text" onfocus="changeColorFocus(this);" onblur="changeColorBlur(this, &#39;Телефон&#39;);" id="F1BC20BE-C1E2-E1FC-3BEB-4F2F28F29ECC">
                                </li>
                                <li class="button" id="B1F816D1-ABBD-94AA-9A83-C960AD155442">
                                    <input type="button" onclick="pushmsg(this);" value="Оставить заявку" id="45562A64-D1EF-AC84-36C3-BB6E2C547E95">
<br id="61617370-CC26-2A2A-033F-6DBB59768809"><font color="silver" id="96EDD848-2200-DAA5-9768-8A2B3A7B9DC7">*Ваши данные останутся конфиденциальными</font>
<br id="148AF7D2-0979-600E-1467-C82136CBC288">
                                </li>
                            </ul>
                        </form>
                    </div>
                </fieldset>
            </div>
        </div>
    </div>
</div>


</body></html>

Вот js который отвечает за ее отправку:
// для предзагрузки картинок кнопки необходимо прописать через запятую 
		var r = preload('ap_s/img/hover.png,ap_s/img/normal.png,ap_s/img/active.png');
	
		function _onfocus(event){
			cheak_edit(event);
		}
		
		function _onblur(event){
			cheak_edit(event);
		}	
			
		function cheak_edit(event){
			if ($('#'+event.id).attr('defval') != null)
				if (event.value.length!=0){
					if (event.value != $('#'+event.id).attr('defval')){
						$("#"+event.id).addClass('edit_f_te');
						}else{
							$('#'+event.id).val("");
							$("#"+event.id).addClass('edit_f_te');
						}
				}else {
					$('#'+event.id).val($('#'+event.id).attr('defval'));
					$("#"+event.id).removeClass('edit_f_te');
				}
				$('#'+event.id).removeClass('edit_f_error');
		}
		

	function pushmsg(event) {
                var str = 'p=1';
				var sform=''; var ft='';
				var v = 0;
				$(event).parents('form').each(function(){
					sform =  $(this).attr('id');
				});

				// vemail="true"
				$('#'+sform).find("input[vemail*='true']").each(function(){
					if (validate($(this).val())==false){
						$(this).addClass('edit_f_error');
						v = 1;
					}
				});
				
				$('#'+sform).find("input[vphone='true']").each(function(){
					if (validatephone($(this).val())==false){
						$(this).addClass('edit_f_error');
						v = 1;
					}
				});	
				
				$('#'+sform).find("input[type='text'], textarea").each(function(){
					str +=  "&" + $(this).attr('id')+'='+encodeURIComponent(
					(($(this).attr('sname')!=null)?$(this).attr('sname'):$(this).attr('defval'))
					+':;:'+$(this).val());
					if (($(this).attr('defval')==$(this).val()) && ($(this).attr('require')!=null)){
						$(this).addClass('edit_f_error');
						v = 1;
					}
				});
				
				if (v==1) return;
				
				ft = $('#'+sform).find('.label_to').text();
				
				$('#'+sform).children().hide();
				$('#'+sform).find(".progressimg").show();
				
				
				str +=  "&tmes=" + encodeURIComponent(ft);
				

                $.ajax({
                    url: "mail.php",
					crossDomain:true, 
                    data: str,
                    dataType: "jsonp",
                    type: "POST",
                    success: function (data, textStatus) {
						
                       	 	if (data.error=="0"){
                       	 				$('#'+sform).find(".progressimg").hide();
										$('#'+sform).find('.label_sndok').show();
									}
                        	else {
								$('#'+sform).find('.label_sndok').show();
								alert('Error!');
                        	}		
                        
 						
                    },
                     error: 
					 function (request, status, error) {
        				alert('Error!');//alert(request.responseText);
    			}
				/*	 function () {
                        alert('Error!');
                    }*/
                });
}

	function preload(images) {
		if (document.images) {
			var i = 0;
			var imageArray = new Array();
			imageArray = images.split(',');
			var imageObj = new Image();
			for(i=0; i<=imageArray.length-1; i++) {
				imageObj.src=imageArray[i];
			}
		}
	}

	function validate(address) {
	   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	   if(reg.test(address) == false) {
		  return false;
	   }
	   return true;
	}
	

	function validatephone(phone) {
		var reg = /^[-()\s\d]+$/
		return reg.test(phone);
	}	

	
		
	function generateGuid() {
	    var result, i, j;
	    result = '';
	    for(j=0; j<32; j++) {
	        if( j == 8 || j == 12|| j == 16|| j == 20)
	            result = result + '-';
	        i = Math.floor(Math.random()*16).toString(16).toUpperCase();
	        result = result + i;
	    }
	    return result;
	}
	
	
	function bmf(){
	
		$("form").each(function(){
			$(this).find("input[type='text'], textarea").bind('focus', function() {
				_onfocus(this);
			});

			$(this).find("input[type='text'], textarea").bind('blur', function() {
				_onblur(this);
			});
			
			$(this).find('*').each(function(){
					if ($(this).attr('id')==null){
						$(this).attr('id',generateGuid() );
					} 
				});
			$(this).find("input[type='text'], textarea").each(function(){
						if ($(this).attr('sname')==null){
						$(this).attr('sname',$(this).attr('defval'));
					}
				});				
		});
	}
	
	function init_forms(){
		bmf();
	}
	
	$(function(){
               init_forms();
			  
    });

И php обработчик:
<?

$name = $_POST['name'];
$phone = $_POST['phone'];

// #Отправка данных с помощью функции mail()
mail ("pochta@yandex.ru",
      "Новое сообщение с сайта (от : $name)",
       " Имя:$name \n Телефон: $phone,
       "Content-type:text/plain; charset=utf-8");
?>


В общем по нажатию на кнопку отправки, появляется гифка того что идет процесс и дальше ничего не происходит...никаких ошибок, ничего..и письмо на почту не приходит, почта стояла там рабочая...
В чем там может быть проблема?
  • Вопрос задан
  • 4807 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Yago
Надо проанализировать поведение через консоль браузера. Доходит ли дело вообще до php, или js сбоит и выводит ошибку?
Ответ написан
@mayorovp
Открывайте инструменты разработчика в браузере, переходите на вкладку "Сеть" - и посмотрите все запросы, которые браузер делает.

Особое внимание, во-первых, запросу к самому скрипту (что ему передается на вход и что он возвращает). Во-вторых, поставить обработчик, который стоял там раньше - и сравнить с во-первых. В-третьих, обратить внимание на любые неуспешные запросы.

PS ошибку я уже нашел, но не скажу, в чем она. Научитесь отлавливать запросы к серверу. Если найдете отличие, но не поймете, что там происходит - подскажу.
Ответ написан
@summer_rain
Ставь "console.log()" в обработчиках "success" и "error".
Аналогично, в самом начале php-файла сделай лог массива $_REQUEST и посмотри передалось ли что.
И вообще, твой php-шный код не выдаёт никакого результата работы.) Т.е. после отправки почты сервер никак не сигнализирует клиенту об этом. В самом простейшем случаем там должно быть что-то вроде "echo true;".
Ответ написан
@Daniil_Panov
Параметр "data" должен быть массивом, а не строкой (записывайте в переменную str не строку, а массив в формате {ключ: значение}). Если это не поможет, что будет несколько странно, попробуйте указывать в параметре url абсолютный путь (в смысле, используя протокол "http", или "https").
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы