Получение данных html-формы через ajax

261
16 марта 2017, 23:41

Вопрос: при заполнении полей формы, срабатывает условие в form_processing.php и выводится значение переменных, а при отправке пустых полей - все равно срабатывает if

if(isset($name) && isset($email)){
         echo "Переменная email: ". $email. "";
         echo "Переменная name: ". $name;

и выводит: Переменная email: Переменная name:

Вопрос: почему при отправке пустых полей формы не срабатывает else

index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery.loc</title>
<link rel="stylesheet" href="style.css" type="text/css"/>
<script type="text/javascript" src="libs/jquery-3.1.1.min.js"></script>
<script type="text/javascript" src="libs/jquery-ui.min.js"></script>
<script type="text/javascript" src="js/captcha.js"></script>
<link rel="stylesheet" type="text/css" href="css/style.css"/>
</head>
<body>
<div id="form-main">
    <div id="form-div">
        <form class="form" id="form1" action="">
            <p class="name">
                <input name="name" type="text" class="feedback-input" placeholder="Name" id="name" />
            </p>
            <p class="email">
                <input name="email" type="text" class="feedback-input" id="email" placeholder="Email" />
            </p>
            <p class="text">
                <textarea name="text" class="feedback-input" id="comment" placeholder="Comment"></textarea>
            </p>
            <div class="registration">  
                <fieldset>  
                    <legend>Давайте проверим вашу человечность</legend>
                    <div class="captcha_wrap">
                        <div class="captcha">
                            Расставьте по порядку
                        </div>
                        <ul id="sortable">
                            <li class="captchaItem">1</li>
                            <li class="captchaItem">2</li>
                            <li class="captchaItem">3</li>
                            <li class="captchaItem">4</li>
                            <li class="captchaItem">5</li>
                            <li class="captchaItem">6</li>
                        </ul>
                    </div>
                </fieldset>
            </div>              
        </form>
        <div class="submit">
            <button  id="button-blue">send</button>
            <div class="ease"></div>
            <div id="new2"></div>
        </div>
    </div>
    <script type="text/javascript" src="js/script.js"></script>
</body>
</html>

captcha.js

(
function($){
$.fn.shuffle = function() {
return this.each(function(){
 var items = $(this).children();
 return (items.length)
 ? $(this).html($.shuffle(items,$(this)))
 : this;
 });
 }
 $.fn.validate = function() {
 var res = false;
 this.each(function(){
 var arr = $(this).children();
 res =    ((arr[0].innerHTML=="1")&&
   (arr[1].innerHTML=="2")&&
   (arr[2].innerHTML=="3")&&
   (arr[3].innerHTML=="4")&&
   (arr[4].innerHTML=="5")&&
   (arr[5].innerHTML=="6"));
   });
   return res;
   }
   $.shuffle = function(arr,obj) {
   for(
   var j, x, i = arr.length; i;
   j = parseInt(Math.random() * i),
 x = arr[--i], arr[i] = arr[j], arr[j] = x
 );
 if(arr[0].innerHTML=="1") obj.html($.shuffle(arr,obj))
   else return arr;
 }
})(jQuery);
$(function() {
 $("#sortable").sortable();
 $("#sortable").disableSelection();
  $('ul').shuffle();
 $("#button-blue").click(function(){
if($('ul').validate()){
  $.ajax({
    url: "js/form_processing.php",
    type:     "POST", 
    dataType: "html",
    data: $('#form1').serialize(), 
    success: function(response) { 
      document.getElementById('new2').innerHTML = response;
    },
    error: function(response) { 
      document.getElementById('new2').innerHTML = "Ошибка при отправке формы";
    }
  });
} 
else
  alert('Капчу заполни!');
})   
});

form_processing.php

<?php
      $name = htmlspecialchars($_POST["name"]);
      $email = htmlspecialchars($_POST["email"]);
      if(isset($name) && isset($email)){
         echo "Переменная email: ". $email. "<br/>";
         echo "Переменная name: ". $name;
      }
      else 
        echo "Переменные пусты";
 ?>
Answer 1

empty() Проверяет, считается ли переменная пустой. Переменная считается пустой, если она не существует или её значение равно FALSE. Следовательно:

 <?php
 $name = htmlspecialchars($_POST["name"]);
 $email = htmlspecialchars($_POST["email"]);

 if(!empty($name) && !empty($email)){
   echo "Переменная email: ". $email. "<br/>";
   echo "Переменная name: ". $name;
 }
 else {
   echo "Переменные пусты";  
 }
 ?> 

ИЛИ проще:

<?php
 $name = htmlspecialchars($_POST["name"]);
 $email = htmlspecialchars($_POST["email"]);

 if($name && $email){
   echo "Переменная email: ". $email. "<br/>";
   echo "Переменная name: ". $name;
 }
 else {
   echo "Переменные пусты";  
 }
 ?> 

И все работает!

READ ALSO
Лишние 2 пустые строки во всем проекте Netbeans

Лишние 2 пустые строки во всем проекте Netbeans

Подскажите пожалуйста, во всем проекте появились дополнительные 2 пустые строки, как бы их удалить не в каждом отдельном файле, а во всем проекте...

271
Yii2. Ссылка в gridview для связанных моделей

Yii2. Ссылка в gridview для связанных моделей

ЗдравствуйтеКак сделать ссылку в gridview я знаю, но возникла проблема с ссылкой для связанной модели

470
Многомерный массив, $_SESSION и вывод foreach

Многомерный массив, $_SESSION и вывод foreach

Здравствуйте, подскажите, пожалуйстаЗаполняю массив следующим образом и записываю его в переменную $_SESSION:

300
Разница в датах [дубликат]

Разница в датах [дубликат]

На данный вопрос уже ответили:

320