###前提・実現したいこと
パスワードが一致したら、データベースにデータを挿入し、挿入が完了したら以後の更新を終了する処理を開発しています。
ajax の中身の処理の終了後(入力したパスワードが一致しているかの判定)、ページを更新しないとデータベースに挿入した結果が反映されないため、.doneでajax内部の処理後にページ更新をしようと思っているのですが、うまくいきません。
これは元々の仕様で更新ができない、または前後関係によりできない状態なのでしょうか。
知恵を貸していただけたら幸いです。
よろしくお願いします。
###9/1追記
fileNameは、データベース側の主キー(ID)をファイルの名前として使っています。
$fileName = basename($_SERVER['SCRIPT_NAME'],".php");
一部オリジナルのクラスライブラリを使用しているため、PDO部分の書き方が異なる場合があります。
9/1 POSTをGETに書き換えたところ、doneの中身が処理されるようになりました。
しかし、データベースがアップデートされない状態になりました。
###ソースコード
var input_Pass = window.prompt("管理パスワードを入力してください。");
if(input_Pass){
$.when(
$.ajax({
url:"../../php/finish_Password.php",
type:"POST",
data:{
input_Pass:input_Pass,
fileName:"<?php echo $fileName; ?>"
}
})
).done(
function(){
window.location.reload();
}
);
}else{
window.alert("キャンセルしました");
}
###finish_Password.php
###9/1更新 パスワード認証
<script type="text/javascript">
function myEnter(){
var input_Pass = window.prompt("管理パスワードを入力してください。");
if (input_Pass) {
$.ajax({
url:"../../php/finish_Password.php",
type:"POST",
data:{
input_Pass:input_Pass,
fileName:"<?php echo $fileName; ?>"
}
})
.done(function (){
window.alert("確認テスト");
})
.fail(function (xhr, status) {console.log(xhr, status);
});
} else {
window.alert("キャンセルしました");
}
}
</script>
###9/1更新 finish_Password.php
<?php $mysql = //mysqlサーバーへのログイン $fileName = $_POST["fileName"]; $pass_Hash = $mysql-> select("******"); //$input_Pass = $_POST["input_Pass"]; //print_r($pass_Hash); if(password_verify($_POST["input_Pass"], $pass_Hash[0][0])){ $time = new DateTime(); $finishTime = $time->format('Y-m-d H:i:s'); //アップデートを一時的に止めています。 } ?>回答3件
あなたの回答
tips
プレビュー