在jquery / ajax中使用错误函数

我正在使用jquery在ajax / php中使用连接模块。 我需要从php向ajax抛出exception,以指示电子邮件或密码是否为假。

我在网上搜索了一种使用jquery的ajax提出的’error’函数的方法。 找到了一些解决方案,但都没有。

尝试抛出一个phpexception:错误函数没有捕获它; 尝试通过发送json编码数据避免使用错误function:无法在成功函数中使用它…错误函数似乎只捕获服务器错误,这真的不是很有趣。

请问有人可以帮我找到一种通过ajax从php传递错误的方法吗?

将php响应中的请求状态码设置为4XX或5XX。 这将使您最终进入error / fail回调。

我不一定要成为列表中的值。 例如,您可以创建自己的:

 StatusCode: 550 StatusText: "My Custom Error" 

如果我没记错的话,在PHP中看起来像这样:

 header('HTTP/1.0 550 My Custom Error'); 

最后,将错误详细信息发送给客户端,以通知他们出了什么问题。 您可以将信息放在标题中,也可以使用json_encode()序列化exception

  'vanilla!', )); } catch (Exception $e) { echo json_encode(array( 'error' => array( 'msg' => $e->getMessage(), 'code' => $e->getCode(), ), )); } ?> 

客户端:

 $.ajax({ url: 'page.php', data: { 'some_bad_condition': true } }).done(function(data){ console.log('success!', data); }).fail(function(jqXhr){ var errorObject = $.parseJSON(jqXhr.responseText); console.log('something went wrong:', errorObject); //jqXhr.status === 550 //jqXhr.statusText === 'My Custom Error' }); 

不要忘记在PHP文件中指定正确的mimetype。 这样jQuery就会知道它是一个JSON响应而没有你明确指定它。

 header('Cache-Control: no-cache, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Content-type: application/json'); 

尝试使用此插件:

给ajaxForm

来吧。

ajax处理表单的提交,如果有错误,将使用错误回调。

我想我以前用过这个。 这很容易使用,如果您的PHP中的返回状态代码是正确的,也请检查。