2017-11-21 2 views
2

Ich bin derzeit mit Javascript codieren und ich habe eine Wand getroffen. Javascript FETCH API zu POST ist dies:Zurückgeben einer Ausnahme mit PHP zu Javascript FETCH API

('Formular') ist meine Form #ID in HTML.

fetch(URL_TO_POST, { 
      method: 'post', 
      body: new FormData(document.querySelector('form')) 
     }).then(response => { 
      console.log(response); 
     }); 

PHP-Datei:

if(!isset($_POST['email'])){ 
    throw new exception (blabla); 
} 

URL_TO_POST ist wie ein "validation.php" und in den Code abrufen ich einige POST Informationen und tun es ein paar Sachen. Das Problem ist, dass ich keine Ausnahme auf die Javascript-Antwort werfen kann! Irgendwelche Gedanken dazu? Hinweis: Ich verwende keine Ajax zum Posten, weil ich versuche, einfach und sauber mit nur Js-Code zu bleiben. Danke!

+0

Und was erwarten Sie, wenn Sie eine Ausnahme werfen? –

+0

Ich meine, keine Ausnahme genau zu werfen, aber eine Rückmeldung an den Benutzer senden. Wenn der Benutzer eine E-Mail im falschen Format eingegeben hat, usw. –

+1

Senden Sie einen Statuscode, der nicht 200 ist. –

Antwort

0

In Ihrem JavaScript können Sie die ablehnen verwenden Handler ungültige Daten an den Server gesendet zu handhaben:

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) 
    } 
) 

nicht klar, was Sie für PHP verwenden, aber Sie können den Statuscode 422 mit einigen json bieten:

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