AJAX和PHP返回bool和字符串

Ste*_*Hat 0 php ajax

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

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

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

  • 返回一个数组[true/false, “String to display”]虽然这在PHP文件中看起来很笨拙并且还在页面上解析它
  • 返回success时,我们想返回true,和标签别的是失败的,并假定它是失败的消息

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

提前致谢!

Dev*_*von 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);
Run Code Online (Sandbox Code Playgroud)