我对 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脚本 <?phpif(!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();}
2 回答
哈士奇WWW
TA贡献1799条经验 获得超6个赞
经过更好的调试后,我找到了问题的原因,这确实是由于 Google Chrome 造成的。代码没问题。
我想强制向服务器发送错误的数据,并且我正在使用检查 chrome 元素并手动放置任何值的功能来做到这一点,当以这种方式更改值时,Chrome 最终会“堆叠”或“添加”再次调用AJAX的功能,如果我多次改变这种方式,它会堆叠越来越多的调用,我不知道这是否应该是正确的行为
带有调用的 HTML:
<button id="btnVender" onclick="venderAcao(210,'5mbZz5LpULCs9oKT3BHbzUiW',3)" class="btn btn-vender mt-xl-0 mt-lg-3 mt-0">Vender</button>
如果我更改 onclick 函数的任何这些值,就好像我在 onclick 中调用了两个函数:原始函数和修改后的函数
感谢大家的帮助
呼啦一阵风
TA贡献1802条经验 获得超6个赞
您可以尝试使用exit;不带 '()' 或return false;orreturn; 并将其放在退出之前
http_response_code(500);
echo json_encode('ERROR');
exit;
- 2 回答
- 0 关注
- 256 浏览
添加回答
举报
0/150
提交
取消