Php JSON返回了单词“quot;邮政「;起初
我发誓我快疯了。使用envato market的堆栈模板,每次我尝试执行简单的ajax请求时,php返回的json都是无效的。我在另一个模板中使用了相同的代码,效果很好Php JSON返回了单词“quot;邮政「;起初,php,jquery,html,json,ajax,Php,Jquery,Html,Json,Ajax,我发誓我快疯了。使用envato market的堆栈模板,每次我尝试执行简单的ajax请求时,php返回的json都是无效的。我在另一个模板中使用了相同的代码,效果很好 $.ajax({ url: "../api/login", dataType: 'json', type: "post", data:{ login:login, pass:pass }, success: function(data) {
$.ajax({
url: "../api/login",
dataType: 'json',
type: "post",
data:{
login:login,
pass:pass
},
success: function(data) {
console.log(data);
token = data.token;
},
error: function(data){
console.log(data);
}
});
这个电话再简单不过了。我应该得到一个包含令牌的数组,而不是
POST"8b025621d238f1bf715941067a33dc1f"
是那根柱子把我扔了。这在我的其他任何应用程序中都不会发生。返回的php代码在这里
function checkLogin(){
include "logindb.php";
$password = $_POST['pass'];
$login = $_POST['login'];
$db = new adminLogin();
$result = $db->logInUser($login);
$id = $result['id'];
$hash = substr( $result['hash'], 0, 60 );
error_log("hash is-->>$hash");
if(password_verify($password, $hash)){
$status = "login successful";
$token = openssl_random_pseudo_bytes(16);
$token = bin2hex($token);
$result = $db->addToken($id,$token);
error_log("login successful");
}else{
error_log("login failed");
$status = "Unauthorized";
header('HTTP/1.1 401 Unauthorized', true, 401);
}
$returnValue = json_encode(array('response'=>$status,'token'=>$token));
echo $returnValue;
}
非常感谢您的任何见解。谢谢。与您当前编辑的PHP代码一样,没有任何缺陷 在调用
checkLogin()
之前,您似乎已经回显了POST
尝试检查代码一次并删除该
echo
部分。你可以走了。在你的PHP脚本中,有一些东西在回显POST
。无法从您发布的小片段中看出发生这种情况的原因。请尝试回显$token
您认为应该获取数组的原因是什么?您没有执行echo json_编码(数组('token'=>$token))代码>@Barmar是对的。。发布更多信息,输出不可能来自该函数。忽略POST
前缀问题,应该看起来像{“response”:“login successful”,“token”:“8B0256213d38f1bf715941067a3dc1f”}
@sixstring在调用checkLogin()
之前有东西在回显POST
。解决了问题。巴默是对的。我一直在追逐jquery,所以错过了它。