2017-05-26 7 views
0

私はJQueryとPHPのスクリプトを書いています。 PHPから成功した後、AJAX関数は成功応答を受け取るべきですが、私はそれを得ていません。 は、以下のコードです:AJAX関数がPHPからの正しい応答を得ていませんか?

$.ajax({ 

        url  :"script_admin-add-category.php", 
        method :"POST", 
        data :{lExpensesId:lcl_ExpensesId}, 

        success:function(data){ 
         //if(data=="ok"){ 
          if(data=="YES"){ 
           alert("EMAIL"); 
          }else{ 
           alert(data); 
          } 
         //} 
         //if(data=="ok"){ 
          //alert("Expenses Id already exists!"); 
         //}else{ 
          //alert(data); 
         //} 
        } 

     }); 

、ここでPHPコード

//Check connection 
    if(!$conn){ 
     die("Connection Failed: " .mysqli_connect_error()); 
    }else{ 
//echo "helloooo"; 
      if(isset($_POST["lExpensesId"])){ 
       $lExpensesId = $_POST["lExpensesId"]; 
        $Lquery = "SELECT ExpensesId FROM tblexpensestype WHERE ExpensesId = '$lExpensesId'"; 
        if($query_result = mysqli_query($conn, $Lquery)){ 

          if(mysqli_num_rows($query_result)){ 
           echo 'YES'; 
          }else{ 
           //echo "Proceed"; 
          } 
        }else{ 
         echo "Not Okay"; 
        } 
      }else{ 

      } 
    }  

私はブラウザとも警告値にエコー値を見ることができます。しかし、条件が成功機能のために働いていない場合???

+0

ネットワークコンソールにはどのような応答コードがありますか?これは、リクエストが発生したこととそれがどのような応答をしたかを確認するために、常にajaxをデバッグする最初の停止でなければなりません。 – Taplar

+0

「はい」と表示されています。実際には、それはYESとEMAILを表示する必要があります –

+0

私はそれがもっとそうであることを賭けています。 – epascarello

答えて

0

返されるデータに正しいデータ型を設定してみてください。私はあなたがあなたの望ましい結果を取得されていませんと、あなたがjquery AJAXPHPコードの問題を抱えているあなたの質問を理解して

$.ajax({ 
    url: 'script_admin-add-category.php', 
    method: 'POST', 
    data: {lExpensesId: lcl_ExpensesId}, 
    dataType: 'text', 
    success: function (data) { 
    if (data === 'YES') { 
     alert('EMAIL') 
    } else { 
     alert(data) 
    } 
    } 
}) 
+0

こんにちは、それは問題ありません –

0

@J Salariaを。 jquery ajaxを使用してデータを送信する方法はいくつかありますが、詳細を説明します。 ?

$_POST["lExpensesId"]あなたはHTML <form>からこのIDを取得している.Becauseは、ここで私はあなた.. AJAXを通じて

NOTEのデータを送信するために3つの異なった練習方法を示すことがあります:あなたのコードは、SQL INJECIONに対して脆弱です。 THIS ISデータを送信する

<form action="" id="send_lExpensesId_form" method="post"> 
    <input type="text" name="lExpensesId" id="lExpensesId" > 
    <input type="submit" name="submit" > 
</form> 

FIRST WAY:私はまた、あなたがSQL INJECTION LINK

HTMLフォームコードこのリンクでSQLインジェクションCLICKについての詳細を学びたいOVERCOME.IF TO YOUに方法を示すことになりますHTML <FORM>

<script> 
    $(document).ready(function(){ 
     $("#send_lExpensesId_form").submit(function(e){ 
      e.preventDefault(); 

      var form_serialize = $(this).serialize(); 

      $.ajax({ 
       type:'POST', 
       url:'script_admin-add-category.php', 
       data:form_serialize, 
       success:function(data){ 
        if(data == "YES"){ 
         alert("EMAIL"); 
        }else{ 
         alert(data); 
        } 
       } 
      }); 
     }); 
    }); 
</script> 

SECOND WAYデータを送信するとはいえ、これはHTML <FORM>

ですが、 ITは、ITがここにSQLインジェクション対策の mysqli_real_escape_string();

<?php 
    $servername = "localhost"; 
    $username = "root"; 
    $password = "admin"; 
    $dbname = "demo"; 

    // Create connection 
    $conn = mysqli_connect($servername, $username, $password, $dbname); 
    // Check connection 
    if (!$conn) { 
     die("Connection failed: " . mysqli_connect_error()); 
    } 

    if(isset($_POST["lExpensesId"])){ 
     $lExpensesId = mysqli_real_escape_string($conn, $_POST["lExpensesId"]); 

     $Lquery = "SELECT ExpensesId FROM tblexpensestype WHERE ExpensesId = '$lExpensesId'"; 
     if($query_result = mysqli_query($conn, $Lquery)){ 

      if(mysqli_num_rows($query_result)){ 
       echo 'YES'; 
      }else{ 
       echo "Proceed"; 
      } 
     }else{ 
      echo "Error".mysqli_connect_error(); 
     } 
    } 
?> 

WITH PHP CODEこれはHERE WHEN A LINK CLICKED OR TO DELETED THROUGH ID OR CLASS

<script> 
    $(document).ready(function(){ 
     $("#send_lExpensesId_form").submit(function(e){ 
      e.preventDefault(); 

      var lcl_ExpensesId = $("#lExpensesId").val(); 

      $.ajax({ 
       type:'POST', 
       url:'script_admin-add-category.php', 
       data:{lExpensesId:lcl_ExpensesId}, 
       success:function(data){ 
        if(data == "YES"){ 
         alert("EMAIL"); 
        }else{ 
         alert(data); 
        } 
       } 
      }); 
     }); 
    }); 
</script> 

を使用されているAGAINST優れているMYSQLI->PREPAREDを持つ他のPHPコードをデータを送信する0

<script> 
    $(document).ready(function(){ 
     $("#send_lExpensesId_form").submit(function(e){ 
      e.preventDefault(); 

      var form_serialize = new FormData($(this)[0]); 


      $.ajax({ 
       type:'POST', 
       url:'script_admin-add-category.php', 
       data:form_serialize, 
       contentType: false, 
       processData: false, 
       success:function(data){ 
        if(data == "YES"){ 
         alert("EMAIL"); 
        }else{ 
         alert(data); 
        } 
       } 
      }); 
     }); 
    }); 
</script> 

第三の道SQLインジェクション

<?php 
    // WITH MYSQLI PREPARED STATEMENT AGAINST SQL INJECTION 
    $sql = $conn->stmt_init(); 
     $Lquery = "SELECT ExpensesId FROM tblexpensestype WHERE ExpensesId =?"; 
     if($sql->prepare($Lquery)){ 
      $sql->bind_param('i',$lExpensesId); 
      $sql->execute(); 
      $sql->store_result(); 

      if($sql->num_rows > 0){ 
       echo 'YES'; 
      }else{ 
       echo "Proceed"; 
      } 
     } 
     else 
     { 
      echo "Error".mysqli_connect_error(); 
     } 
?> 

私はあなたに疑問があると思っています。あなたに他の人の意見がありましたら、ご安心ください。

0

すべての方法は知られており、多くのお手伝いがあります。私の質問は、PHPから適切なリターンを得ることができない理由です。以下は私のコードです:

var lcl_ExpensesId = $("#IExpensesId").val(); 
      //alert(lcl_ExpensesId); 
     $.ajax({ 

        url  :"script_admin-add-category.php", 
        method :"POST", 
        data :{lExpensesId:lcl_ExpensesId}, 
        success:function(data){ 
         if(data=="ok"){ 
          alert("Inserted"); 
         }else{ 
          alert(data); 
         } 
        } 
     }); 
ob_start(); 

/------------------ ACCOUNTSにドロップダウン費LISTを読み出す機能----------- ------------/

require_once 'db_config.php'; 
$newlist = fxn_CONFIGURATION(); 
$HOST  = $newlist[0]; 
$DBNAME  = $newlist[1]; 
$UNAME  = $newlist[2]; 
$PSWD  = $newlist[3]; 
$conn = mysqli_connect($HOST, $UNAME, $PSWD, $DBNAME); 


    //Check connection 
    if(!$conn){ 
     die("Connection Failed: " .mysqli_connect_error()); 
    }else{ 
      if(isset($_POST["lExpensesId"])){ 

       $lExpensesId = $_POST["lExpensesId"]; 

        $Lquery = "SELECT ExpensesId FROM tblexpensestype WHERE ExpensesId = '$lExpensesId'"; 
        $query_result = mysqli_query($conn, $Lquery); 

          if(mysqli_num_rows($query_result) > 0){ 
           echo "ok"; 
          }else{ 
           echo "Proceed"; 
          } 

      } 
    }  
mysqli_close($conn); 


ob_flush(); 

として、私は、入力からkeyupので、私は入力します何でも、それぞれ毎回、それはPHPスクリプトを実行します方法の私の一つに、このAJAXを使用しています。私はdatabseでFOODの項目を持っています。 "F"と入力すると、 "O" - Proceed、 "O" - Proceed、 "D" - ok .... Dを入力すると、Okの代わりに "Inserted"が表示されます。 これは私の疑問で、なぜ私はこれを得ているのですか?

+0

@J Salaria 'ExpiresId = '$ lExpensesId''を使用して' SQL LIKEまたはWILDCARD QUERY'を使用する必要があります。 '$ Lquery =" SELECT ExpensesId FROM tblexpensestype WHERE ExpensesId LIKE'% $ lExpensesId% '";' –

+0

私は皆さんが質問を理解することができないと思っています。私は何かを掲示しており、皆さんは何かを投稿し続けています..... ワイルドカードについて教えてくれてありがとう。 私が投稿した質問とすべての投稿を見てください。 –

+0

ここでは、if(data == "ok")のソースブレークポイントで何か新しいことがあります。 データの出力がわかります"-----進んで" - 手段は私が OCAL 戻り値 として取得していたように、キーの単純な –

0

上記の問題は、PHPでexit()ステートメントを使用することで解決されています。これは、私の値の後に5つの↵が表示され、閉じるというわけではありません。したがって、問題を解決する最善の方法は、必要に応じてPHPでexit()を使用することです。

関連する問題