Jquery ajax返回一个带有responsetext的json对象为null

时间:2015-12-07 01:46:04

标签: php jquery ajax

我试图在bootstrap形式中使用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);    
             }
       ?>

`

1 个答案:

答案 0 :(得分:0)

看起来你必须像这样更改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标题的情况下工作。