2017-05-26 101 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()按需要