2016-02-06 3 views
-1

Часто я использую ajax по jquery, но в соответствии с приведенным ниже кодом, почему он не отображает сообщение «вы ошибались», когда «IF» истинно? и просто отобразить сообщение «faile»?Почему он не отображает сообщение «Вы ошиблись»?

файл login.php

<!DOCTYPE html> 
<html lang="en" class="no-js"> 
<head> 
<title>just for test</title> 
</head> 
<div id="Response" ></div> 
<h3>login</h3> 
<form id="Login" class="form-login"> 
<input type="text" class="form-control" name="yourname" id="yourname" placeholder="yourname"> 
<button type="submit" class="btn btn-bricky pull-left"> ورود <i class="fa fa-arrow-circle-right"></i> </button> 
</form> 
</div> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
<script> 
$(document).ready(function (e){ 
$("#Login").on('submit',(function(e){ 
e.preventDefault(); 
    $.ajax({ 
     url: "include/php/check_login.php", 
     type: "POST", 
     data: new FormData(this), 
     contentType: false, 
     cache: false, 
     processData:false, 
     success: function(data) 
     { 
      if(data=='faile'){ 
      $("#Response").html('you had wrong...'); 
      }else{ 
      $("#Response").html(data); 
      } 
       return false; 
      }  
     }); 
})); 
});   
    </script> 
</body><!-- end: BODY --> 
</html> 

файл: check_login.php

<?php 
if (isset($_POST['yourname']) && !empty($_POST['yourname'])) 
{ 
    $yourname=$_POST['yourname']; 
    echo $yourname; 
} 
else echo "faile"; 
?> 
+0

I просто скопировал и вставил код в мою IDE ... он работает хорошо, как вам это нужно. Пока вы можете использовать метод, основанный на json. – kanudo

ответ

0

Вот способ приема данных в формате JSON на основе

<!DOCTYPE html> 
<html lang="en" class="no-js"> <head> <title>just for test</title> </head> 

    <body> 

     <div id="Response" ></div> 

     <h3>login</h3> 
     <form id="Login" class="form-login"> 
      <input type="text" class="form-control" name="yourname" id="yourname" placeholder="yourname"> 
      <button type="submit" class="btn btn-bricky pull-left"> ورود <i class="fa fa-arrow-circle-right"></i> </button> 
     </form> 

     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
     <script type="text/javascript"> 

      $(function (e) { 

       $("#Login").submit(function(e){ 

       e.preventDefault(); 

       $.ajax({ 

        url: "check_login.php", 
        data: new FormData(this), 

        type: "POST", 
        contentType: false, 
        cache: false, 
        processData:false, 

        // data type should be set to json to get the response data as json value 
        dataType: 'json', 

        success: function(json) { 

          if(json.data == 'faile') { 

           $("#Response").html('you had wrong...'); 

          } else { 

           $("#Response").html(json.data); 

          } 

          return false; 
         } 
        }); 
       }); 
      }); 

     </script> 

    </body> 

</html> 

check_login.php

<?php 

    session_start(); 
    if (isset($_POST['yourname']) && !empty($_POST['yourname'])) 
    { 
     $response = array("data" => $_POST['yourname']); 

    } else {$response = array("data" => "faile");} 

    echo json_encode($response); 

?> 

Использование JSON, не должна быть никакой ошибки относительно \n :: новой линии после того, как эхо

0

Место

var yourname=$('#yourname').val(); 

между <script> и $(document).ready(function (e){

и переход от

data: new FormData(this), 

в

data: "yourname="+yourname; 
0

Посмотрите на символ новой строки, которая возвращается после ?>, так как она возвращает что-то вроде "faile\n".

Вы можете использовать один из:

  • удалить закрывающий ?> тег
  • добавить die после echo
  • проверка "faile\n" (не рекомендуется)
+0

Или обрезать передние/конечные пробелы на стороне клиента перед тестированием значения. – nnnnnn

0

добавить die(); после else echo "faile";

Смежные вопросы