将 PHP 异常返回到 javascript FETCH API
Posted
技术标签:
【中文标题】将 PHP 异常返回到 javascript FETCH API【英文标题】:Returning an exception with PHP to javascript FETCH API 【发布时间】:2018-05-05 05:28:30 【问题描述】:我目前正在使用 javascript 进行编码,但我碰壁了。 Javascript FETCH api to POST 是这样的:
('form') 是我在 html 中的表单#ID。
fetch(URL_TO_POST,
method: 'post',
body: new FormData(document.querySelector('form'))
).then(response =>
console.log(response);
);
php 文件:
if( !isset($_POST['email']))
throw new exception (blabla);
URL_TO_POST 就像一个“validation.php”,在代码中我检索一些 POST 信息并在那里做一些事情。问题是我不能对 javascript 响应抛出任何异常!对此有什么想法吗?注意:我没有使用 ajax 发布,因为我试图只使用 js 代码保持简单和干净。 谢谢!
【问题讨论】:
抛出异常你期望什么? 我的意思是,不是完全抛出异常,而是向用户发送反馈。如果用户输入了错误格式的电子邮件等 发送不是200的状态码。 发送不是200的状态码是返回错误给api的唯一方法吗? 然后发送json。发送 xml。发送纯文本。随便。 【参考方案1】:在您的 JavaScript 中,您可以使用拒绝处理程序来处理发送到服务器的无效数据:
fetch(
URL_TO_POST,
method: 'post',
body: new FormData(document.querySelector('form'))
)
.then(
function(response)
//https://httpstatuses.com/422
if (response.status === 422)
return Promise.reject(response.json());
//check for other things that could have gone wrong
return response.json();
).then(
function(json)
console.log("received success json",json)
,function(json)
console.log("received reject json",json)
)
不清楚你用什么PHP,但你可以用一些json提供422的状态码:
http_response_code(422);
echo json_encode(array("error" => "missing field", "field" => "email"));
【讨论】:
以上是关于将 PHP 异常返回到 javascript FETCH API的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Javascript 调用 PHP 文件并将数据从 PHP 返回到 Javascript
PHP-PDO:我如何将一些值返回到 javascript 中以在视图上呈现?
如何在javascript中将数组从php返回到ajax响应