我对 php 中的脚本有一个 ajax 请求,在这个脚本中,我对过去的值进行了多次检查,然后在调用 DAO 方法将信息保存在数据库中之后,到目前为止一切正常,问题是当验证失败我使用 echo json_enconde ($error) 返回错误并使用 exit()。会出现什么问题?好吧,即使退出也会发生一些奇怪的行为,是的,返回 $error ,但即使有此返回,成功函数也会被触发两次,一个将其返回给我,另一个继续调用脚本并将信息保存在数据库。
阿贾克斯
$.ajax({
method: "POST",
url: "ajax/compra-acao.php",
data: {usuario_id: usuario, cod: c, qtd: quantidade, acao: acao1},
dataType: 'JSON',
success: function(response){
console.log(response)
document.getElementById('btnComprar').disabled = false
return 0;
}
},
error: function(response, status, error){
alert(response.responseText);
}
})
PHP脚本
<?php
if(!isset($_POST['usuario_id']) || !isset($_POST['cod']) || !isset($_POST['qtd']) || !isset($_POST['acao'])){
echo json_encode($retorno['erro'] = 'Houve um erro ao processar sua solicitação. POST');
exit();
}
include_once('../PDO/acaoDAO.php');
include_once('../PDO/usuarioDAO.php');
$usuario = new UserBD();
$acao = new Acao();
$retorno = [];
$usuario = $usuario->getUserById($_POST['usuario_id']);
if(!$usuario){
$retorno['erro'] = 'Houve um erro ao processar sua solicitação';
echo json_encode($retorno);
exit();
}
if(!password_verify($usuario[0]['cpf'], $_POST['cod'])){
$retorno['erro'] = 'Hoje não, espertinho';
echo json_encode($retorno);
exit();
}
if($_POST['qtd'] < 1){
$retorno['erro'] = 'Quantidade inválida';
echo json_encode($retorno);
exit();
}
$precoAcao = $acao->getPrecoAcaoById($_POST['acao']);
if(!$precoAcao){
$retorno['erro'] = 'Ação inválida';
echo json_encode($retorno);
exit();
}
$saldo = $acao->getSaldoDinheiroById($_POST['usuario_id']);
if($saldo < (double) $precoAcao * (int) $_POST['qtd']){
$retorno['erro'] = 'Saldo insuficiente';
echo json_encode($retorno);
exit();
}
哈士奇WWW
呼啦一阵风