AJAX和PHP返回bool和字符串

时间:2016-02-19 02:57:09

标签: php ajax

我有一个基于ajax的脚本,它纯粹是为运行php脚本来验证用户而设计的。由于存在用户身份验证,可能会出现以下两种结果之一:要么进行身份验证,要么不进行身份验证 要将成功或失败表示回到调用它的页面非常简单,只需echo ‘success’;或'echo'failure'`并让JS / jQuery脚本通过响应字符串处理它。 (或者至少我认为这是一种很好的做法..)

但除了本质上返回true或false之外,如果它返回false,我还想回复一下它为什么失败的消息。用户存在吗?密码不正确吗?或者数据库访问出错了,需要吐出技术错误代码。由于我们已经使用true或false进行响应,因此我们不能将错误语句与消息一起发送回来,否则技术上并不是错误,因为有更多数据。

现在我有了这些想法,但我觉得还有更好的方法:

  • 返回一个数组[true/false, “String to display”]虽然这在PHP文件中看起来很笨拙并且在页面上解析它
  • 当我们想要返回true时返回success,并将其他任何内容标记为失败并假设它是失败的消息

但是说实话,我觉得整个文本响应方法都很糟糕,特别是对于像用户身份验证这样的东西,因为它可能很容易被欺骗(?)所以推荐的方法是什么样的呢?

提前致谢!

1 个答案:

答案 0 :(得分:6)

这纯粹基于意见,但我认为在处理两个系统(如PHP(服务器)和Javascript(客户端))之间的通信时,您缺少两个重要概念。

一,评估响应代码。如果HTTP响应代码是200,则表示OK,201表示创建了资源(可能是会话),401表示用户未授权。鉴于此,仅通过HTTP响应,您应该能够判断操作是否成功。

二,使用JSON或标记语言。您可以传递JSON字符串以包含状态和消息,并在Javascript中解析JSON字符串。

PHP中的示例:

http_response_code(401);
$response = [ 
'success' => false,
'message' => 'Password incorrect'
];
echo json_encode($response);