現在、ユーザーデータを受け取り、送信時にmySQLに渡すフォームを使用しています。それは何か誤りが適用される表示するために失敗した投稿に変更したい最初の段落を持っています。ユーザーに何が間違っているかを示すことができなかった場合、エラーをリフレッシュされたフォームに渡したいと思います。ここに私のオープニングディビジョンがあります。HTMLフォームの再ロード時にsessionStorage変数を使用してエラーを受け取ります
<div id="formExplained">
<h1>Title Here</h1>
<p>Content Here</p>
</div>
提出の私のスクリプトがfalseに私の$エラー変数を設定し、そのとき$errors == false
フォーム送信を続行することができます。私はPHPのさまざまなエラーをチェックし、エラーごとに1つずつ追加します。最後に私は
if($_POST['submit']){
//variable to hold relavent error messages. Set to false
$error = false;
//check each form field for errors
if(!$title){
$error .= $missingTitle;
}else{
$title = filter_var($title, FILTER_SANITIZE_STRING);
$title = mysqli_real_escape_string($link, $title);
}//Check for Grocoordinates
if(!$lat || !$lng){
$error .= $missingGeo;
}//etc
私はmySQLのクエリをセットアップする前に私はエラーのチェックを行い、コードが存在する場合はそれを終了します。ここでも私はエラーをsessionStorage
に渡し、エラーを含むdivをエコーします。
if($error){
//pass errors from php to session Storage to display on reload
echo "<script>sessionStorage.setItem('error', '$error');</script>";
echo "<div id='error' class='error'>$error;</div>";
echo "<p>Here Is Proof that this is Executing</p>";
die();
}
エラーを含むdivと段落は、両方ともページリロード時に完全に実行されます。それらは私のマップの一番下に表示されます。
上記のすべてのPHP提出コードを実行する別のJavaScriptで、私はsessionStorage変数をプルし、エラーを反映するために私のinnerHTMLを私の開始divから変更しようとします。
<script>
var error = sessionStorage.getItem('error');
if(error){
document.getElementById('formExplained').innerHTML = "<div class='error'><p>" + error + "</p></div>";
}
</script>
このコードは、最初の投稿では正しく実行されませんが、2回目の投稿では、自分のフォームの上部にエラーが表示されます。エラーが発生する限り私が変更したものは、2リフレッシュの遅延後にのみ表示されるようです。
ページを確認するには、(http://www.sumoftruth.com/map/map.php)を使用してください。このフォームは「オファーシェルター」の下にあります
この泥沼から私を救い出すためのガイダンスは高く評価されます。
あなたはあなたのファイルの最後の代わりに、初め –
でチェックのsessionStorageを行う必要があり、 '[非推奨]同期のXMLHttpRequestは、メインスレッドであるため、エンドユーザの経験への有害な影響の推奨されていません。詳細については、https://xhr.spec.whatwg.org/を参照してください。 (匿名)@ map.php:52' – RamRaider
ありがとうShahaf!それは確かに事実でした。 – DMrFrost