javascript - 使用 PHP 将异常返回到 javascript FETCH API

标签 javascript php api asynchronous fetch-api

我目前正在使用 javascript 进行编码,但遇到了瓶颈。 Javascript FETCH api 到 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 代码来保持简单和干净。 谢谢!

最佳答案

在您的 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"));

关于javascript - 使用 PHP 将异常返回到 javascript FETCH API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47418373/

相关文章:

javascript - 正则表达式接受从 0 到 168 的所有小数,后跟 N 或 S

javascript - 单击并拖动 Firefox 中的链接会阻止 mouseup 事件

javascript - Jquery 倒计时正在重复

php - 嵌入的YouTube视频无法在Android上播放

java - Spring Boot 抛出异常

objective-c - 谷歌 API 错误 "Multiple methods named ' initWithArray :' found"

javascript - 使用 Grunt-Babel 使 ES6 Internet Explorer 11 兼容

javascript - 如何确定 Canvas 何时完成加载

php - 获取分隔符后到行尾的字符串

java - REST API 输入的 Bean 验证和 API 版本控制