2017-11-21 13 views
2

私は現在javascriptでコーディングしており、壁に当たっています。 Javascript FETCH POSTへのPOSTは次のとおりです。PHPで例外をJavaScriptに返すFETCH API

( 'form')は私のフォーム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の応答に任意の例外をスローすることはできません!それについての考えは?注:jsコードだけでシンプルできれいにしているので、私は投稿にajaxを使用していません。 ありがとう!

サーバーに送信された無効なデータを処理するための拒否ハンドラを使用することができ、あなたのJavaScriptで
+0

例外を投げて何を期待しますか? –

+0

私は、例外を正確に投げるのではなく、ユーザーにフィードバックを送ることを意味します。ユーザーが間違った形式などで電子メールを入力した場合 –

+1

ステータスコードが200でない場合送信 –

答えて

0

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"));