使用 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"));
我目前正在使用 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"));