PHP脚本不会将变量返回给AJAX

时间:2017-02-28 10:14:04

标签: php jquery ajax

该代码用于简单的登录验证。

当向JavaScript返回值时,PHP脚本似乎没有运行,但在没有要返回的变量时运行正常。 所以有什么不对或我需要添加其他任何东西来从PHP返回值。

<?php
    header('Content-type: application/json; charset=utf-8');
    include("config.php");
    $formd=array();
    //Fetching Values from URL
    $username2=$_POST['username1'];
    $password2=$_POST['password1'];
    $query = mysqli_query($db,"SELECT username FROM login WHERE username = '$username2'");
    $result=mysqli_fetch_assoc($query);
    $sql=mysqli_query($db,"SELECT password FROM login WHERE username = '$username2'");
    $resul=mysqli_fetch_assoc($sql);
    $row = mysqli_fetch_array($query,MYSQLI_ASSOC);
    $count = mysqli_num_rows($query);
    $pass=$resul['password'];

    if((password_verify($password2,$pass))and($count==1)) { 
        echo "ds";
    } else {
        echo "no";
        $formd['no']="Invalid password or username"
    }
    mysqli_close($db); // Connection Closed
    echo json_encode($formd);
    exit();
?>

的JavaScript

<script>
    $(document).ready(function(){
        $("#submit").click(function(){
           var username = $("#username").val();
          var password = $("#password").val();
          // Returns successful data submission message when the entered information is stored in database.
          var dataString = 'username1='+ username + '&password1='+ password;
          if(username==''||password=='') {
             alert("Please Fill All Fields");
          } else {
             // AJAX Code To Submit Form.
            $.ajax({
               type: "POST",
               url: "ajaxsubmit.php",
               dataType: "json",
               data: dataString,
               success: function(data){
                  alert(data.no);
               }
            });
          }
        return false;
      });
  });
</script>

2 个答案:

答案 0 :(得分:0)

您的Php代码有2个echo语句

if((password_verify($password2,$pass))and($count==1))
{   
   echo "ds";  // first 
}
else
{
   echo "no";  // first
   $formd['no']="Invalid password or username"
}
  mysqli_close($db); // Connection Closed
  echo json_encode($formd);   // second

这样,您的php脚本会返回格式错误的JSON数据,因此$.ajax()无法处理它。 另外,正如其他人指出的那样,请使用开发人员控制台验证脚本是否返回了预期的数据。

答案 1 :(得分:0)

你的php脚本的if else部分有一个echo语句,然后在if else之外你回显数组$ formd。这会使JSON响应失败。此外,您应该使用exit(1),因为代码中不会引发异常。 这里是您应该使用的片段来使脚本正常工作。

if((password_verify($password2,$pass))and($count==1))
{   
echo "ds";
}
else
{
// echo "no"; this is not required
$formd['no']="Invalid password or username"
}
mysqli_close($db); // Connection Closed
echo json_encode($formd);
exit(1);