我试图在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);
}
?>
`
答案 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标题的情况下工作。