2017-05-26 74 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

嘗試爲返回的數據設置正確的數據類型。

$.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 AJAXPHP代碼有問題,因爲你沒有得到你想要的結果你的問題。有不同的方式通過jquery ajax發送數據,我會詳細解釋。 ?

$_POST["lExpensesId"],您在一個HTML <form>得到這個ID。因爲在這裏,我會向您展示3點不同的熟練的方式通過Ajax來發送數據..

注意:你的代碼很容易受到SQL INJECION。 I'LL也向您展示的方法來OVERCOME.IF你想了解更多有關SQL注入點擊這個LINK SQL INJECTION LINK

HTML表單代碼:

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

第一種方式用於發送數據THIS IS雖然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> 

第二種方法用於發送數據不過這是在HTML <FORM>

<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> 

用於發送數據的第三方式使用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> 

這與mysqli_real_escape_string(); PHP代碼針對SQL INJECTION

<?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(); 
     } 
    } 
?> 

這其他PHP代碼MYSQLI->PREPARED這是更好地與SQL INJECTION

<?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(); 

/------------------函數讀取賬戶DROPDOWN開支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 。我在數據庫中有一個物品作爲食物。當我輸入「F」時,我得到繼續,「O」 - 繼續,「O」 - 繼續,「D」 - 確定.... 當我鍵入D,我應該得到「插入」,而不是確定... 。 這是我的疑問,爲什麼我得到這個?

+0

@J Salaria如果你正在使用單詞進行搜索,那麼你應該使用'SQL LIKE OR WILDCARD QUERY' using'ExpensesId ='$ lExpensesId'' will give you right right answere ..'$ Lquery =「SELECT ExpensesId FROM tblexpensestype WHERE ExpensesId LIKE'% $ lExpensesId%'「;' –

+0

我想知道你們不能理解這個問題。我發佈了一些東西,你們正在發佈其他東西..... 非常感謝你告訴我關於通配符。 請,對問題一看,所有的郵遞方式由我.... –

+0

在這裏,我有一些新的東西在源斷點,如果(數據==「確定」), 我可以看到數據的輸出「繼續-----」 - 手段回車鍵簡單 –

0

上述問題可通過出口()語句在PHP作爲我收到5↵↵↵↵↵我的價值觀以後解決,這意味着我有5行的html,但不關閉?>。因此,要解決這個問題的最好辦法是在PHP中使用的exit()按需要