Jquery ajax返回一个json对象,responsetext为null


Jquery ajax returns a json object with responsetext as null

我正在尝试以引导程序的形式使用ajax。我在服务端使用PHP。ajax方法成功地发布了数据,但没有接收到任何数据。显示的状态为200,就绪状态也是4,但仍然执行错误功能。PHP脚本的标题为application/json,并使用json_encode。但是ajax似乎从来没有得到服务器发送的对象!请帮忙。

这是jquery:`

    $.ajax({ 
    url:'http://localhost/Texephyr/startbootstrap-agency-1.0.5/login.php',
    method:'POST',
    data:$('#log-in').serialize(),
    dataType:'json',
    success:function(msg){
        if(msg =="true"){
            window.location.assign("admin/pages/index.php");
                console.log(msg);
        }
        else{
            if(msg == "false-p"){
                $('#password-error').append('Invalid Password');
                console.log(msg);
            }
            else{
                $('#email-error').append('Invalid Username');
                console.log(msg);   
            }
        }
    },
     error: function(msg){
         $('#email-error').append("There was an Error!");
         console.log(msg)   
     }
});`

这是PHP脚本:`

  <?php
  header("Content-type: application/json");
  session_start();
  include("db_config.php");
  $json = array("txt" = >"false");        
  if(isset($_POST['username']) && isset($_POST['password'])){

 $query = "SELECT id,f_name,l_name,password FROM users WHERE email = '$uname'";
 $login-status = $db->query($query);
 if($login-status->num_rows ===1){
           $result = $login-status->fetch_assoc();
           if(password_verify($passd,$result["password"])){
                 $_SESSION["fname"] = $result["first_name"];
                 $_SESSION["lname"] = $result["last_name"];
                 $_SESSION["id"] = $result["id"];
                 $json["txt"]="true";
                 echo json_encode($json);
           }
     else{
         $json["txt"]="false-p";
        echo json_encode($json);  
       }
    }
     else {
         $json["txt"] = "false";
         echo json_encode($json);
          }
     }else{
               $json["txt"]="false";
               echo json_encode($json);    
             }
       ?>

`

看起来您必须更改如下的javascript文件

$.ajax({ 
url:'http://localhost/Texephyr/startbootstrap-agency-1.0.5/login.php',
method:'POST',
data:$('#log-in').serialize(),
success:function(msg){
    msg=$.parseJSON(msg);
    if(msg.txt =="true"){
        window.location.assign("admin/pages/index.php");
            console.log(msg);
    }
    else{
        if(msg.txt == "false-p"){
            $('#password-error').append('Invalid Password');
            console.log(msg);
        }
        else{
            $('#email-error').append('Invalid Username');
            console.log(msg);   
        }
    }
},
 error: function(msg){
     $('#email-error').append("There was an Error!");
     console.log(msg)   
 }
 });`

您将数据类型设置为json,因为我们将普通文本数据发送到php,所以可以删除它。在响应数据中,最好通过$.parseJSON()解析返回给Object的数据

然后您可以从php脚本中删除header()代码,我发布的代码将在没有json头的情况下工作。