使用 PHP 返回异常到 javascript FETCH API

Returning an exception with PHP to javascript 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 到 post 因为我试图只使用 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 但你可以提供状态码 422 和一些 json:

http_response_code(422);
echo json_encode(array("error" => "missing field", "field" => "email"));