2017-09-28 19 views
0

im Daniel南アメリカから割り当てていないので、私は本当に助けが必要でした。この問題を探していましたが、今まで運がなかったので、簡単な説明があります。ログインが有効かどうかは、いくつかのテストを実行した後に突然現れます.AJAXはうまく動作せず、同じコードを再作成するだけで、新しいコードを再作成する必要があります。Jquery Ajaxは返された値をPHP

これはAjaxコードをテストするために作成した実際の基本ログインです。実際には基本的な「検証」が2〜3回働いた後、動作を停止しました。また、navbar.phpにはナビゲーションバーと、ブートストラップ

<!DOCTYPE html> 
     <html lang="en"> 
     <head> 
      <?php include "navbar.php"; 

      ?> 

      <meta charset="utf-8"> 
      <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 
      <link rel="stylesheet" href="estilos.css"> 
     </head> 
     <body> 

     <form id="login" method="post" onsubmit="SubmitHandler()"> 
      <div class="form-group"> 
       <label for="exampleInputEmail1">Email address</label> 
       <input type="email" class="form-control" id="email" name="email"aria-describedby="emailHelp" placeholder="Enter email"> 
       <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small> 
      </div> 
      <div class="form-group"> 
       <label for="exampleInputPassword1">Password</label> 
       <input type="password" class="form-control" id="password" name="password" placeholder="Password"> 
      </div> 
      <div class="form-check"> 
       <label class="form-check-label"> 
        <input type="checkbox" class="form-check-input"> 
        Check me out 
       </label> 
      </div> 
      <button type="submit" class="btn btn-primary">Submit</button> 
     </form> 
     <script type="text/javascript"> 
      function SubmitHandler() { 
       var email = $('#email').val(); 
       var password = $('#password').val(); 
       $.ajax({ 
        type: "POST", 
        url:"procesado.php", 
        data: {'email':email, 
         'password':password}, 
        cache: false, 
        success: function(data) { 
         alert(data); 
         if(data==true){ 
          alert("Es Correcto/Valid"); 
         } 
         else{ 
          alert("es Incorrecto/Invalid"); 
         } 
        } 
       }); 
      } 

     </script> 
     </body> 
     </html> 

次のいずれかを作動するProcesado呼ばPHPであり、それはちょうどメイン詳細included_once厥bd.phpにあるDBに接続し、第一の入力(電子メール)と第二の比較します(パスワード)をDBに返し、TrueまたはFalseを返します。

<?php 
     include_once 'bd.php'; 
     /** 
     * Created by PhpStorm. 
     * User: Phsic 
     * Date: 26-Sep-17 
     * Time: 8:47 PM 
     */ 

     $email = mysqli_real_escape_string($conn,$_POST['email']); 
     $password = mysqli_real_escape_string($conn,$_POST['password']); 
     $url = $_SERVER['HTTP_REFERER']; 
     $sql = "SELECT * FROM usuario WHERE correo_usuario = '' AND clave_usuario = 'lalass'"; 

     $result = mysqli_query($conn, $sql); 

     $count = mysqli_num_rows($result); 
     $row = mysqli_fetch_array($result); 
     if($count == 1){ 
      $_SESSION['user_session'] = $row['correo_usuario']; 
      echo true; 
     } 
     else { 
      echo false; 
     } 
     exit; 
     ?> 

私は実際に何を試してみるべきか分かりません。私はこのコードを書き直し、オンラインでさまざまなガイドを見ていました。そして、誰かが最初のコードで警告(データ)を返すのか不思議であれば、警告に直接行きます( "es Incorrecto/Invalid");事前に感謝し、私の壊れた英語と不明瞭なコードの両方に申し訳ありません、初心者と私は本当にこれのすべてについての愛好家です。

+0

注:

は、それがさらにあなたのアヤックスに追加デバッグするには。 JSONで実際のブール値を返してください。 –

+0

thx答え、私は実際に返されたデータをトリミングしようとしましたが、データは以下のレスポンスで同じままでした。私はちょうどnumber(1または0)を返し、ちょうどそれを比較しました! –

答えて

0

phpからのあなたの応答は、あなたが分析できるJSON文字列でなければなりません。

しかし、それを動作させるためには、PHPが文字列を返すようにしてください。

if($count == 1){ 
      $_SESSION['user_session'] = $row['correo_usuario']; 
      echo "true"; 
     } 
     else { 
      echo "false"; 
     } 

その後アヤックス

if(data=="true") 

にしかし、あなたは間違いなく、AJAX呼び出しとサーバ側との間の通信にJSONを使用するようにしてください。

それが発行されていない場合は、おそらくデータベース接続が失敗しているため、エラーがスローされます。 「=== `data.trim()false'`:あなたはおそらく応答をトリミングする必要があるので、あなたは文字列を返している

error: function(data) {alert(data);} 
+0

答えをありがとう、実際には1または0のいずれかを返すだけで数を比較するPHPに行っていたが、まだあなたの答えは実際に私がそれを見つけるのを助けた! –

関連する問題