首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP脚本不向AJAX返回变量

问PHP脚本不向AJAX返回变量
EN

Stack Overflow用户
提问于 2017-02-28 18:14:04
回答 2查看 51关注 0票数 0

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

向JavaScript返回值时,PHP脚本似乎不能运行,但当没有变量可返回时,脚本运行得很好。那么有什么问题吗,或者我需要添加任何其他东西才能从PHP返回值。

代码语言:javascript
复制
<?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

代码语言: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>
EN

回答 2

Stack Overflow用户

发布于 2017-02-28 18:32:21

您的Php代码有2个echo语句

代码语言:javascript
复制
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()无法处理它。此外,正如其他人指出的那样,请使用开发人员控制台验证您的脚本是否返回了预期的数据。

票数 0
EN

Stack Overflow用户

发布于 2017-02-28 18:45:00

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

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42505889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档