在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中的返回状态代码是正确的,也请检查。