0
を挿入します。 PHP:Laravel 5.4一貫性のない重複は、次のLaravelコードを実行しているとき、私は一貫性のない重複挿入を取得
<?php
use Illuminate\Support\Facades\DB; // NOTE: I am using the query builder, not a model
use Carbon\Carbon;
Route::get('formtest', function() {
return view('testing.index');
});
use Illuminate\Http\Request;
Route::post('formtest', function(Request $request) {
DB::table('pers2_testing_inserts')
->insert([
'data' => $request["test"],
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
]);
});
アプリケーション/リソース/ビュー/テスト/ index.blade.php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TESTING</title>
</head>
<body>
<form id="form" action="" method="post" novalidate autocomplete="off" onsubmit="disableAndSubmit(event)">
<input type="text" name="test" id="text_box">
<input type="submit" id="submit_button">
</form>
<script type="text/javascript">
var text_box = document.getElementById('text_box');
var submit_button = document.getElementById('submit_button');
var form = document.getElementById('form');
function disableAndSubmit(e) {
submit_button.disabled = true;
if(text_box.value !== '') {
form.submit();
} else {
e.preventDefault();
submit_button.disabled = null;
}
}
</script>
</body>
</html>
私のプロジェクトはLaravel 5.4、PHP 7.1.7で構築されています。仮想マシンとしての迷路を使ってMacで開発しています。私のプロダクションサーバーは、XAMPP v3.2.2のWindows Server 2008 R2標準コンピューターです。一貫性のない重複挿入は、本番サーバーでのみ発生します。ここでは、サーバー上のいくつかのテストのスクリーンショットを示します。
私は私のプログラムですべての上に挿入し、それらのいずれか1つが複製することができ、それは矛盾です。それはそうであってはなりません。私のXAMPP設定で何か変更する必要がありますか? PHPの設定?これを防ぐための回避策がありますか?
リターン文をえっ?私は問題がJavaScriptにあったとは思わなかったが、テストの束の後、それは動作するようだった。ありがとうございました! – n8jadams
@ n8jadamsは、問題が戻ってくるだけではありません。 preventDefault()は本当に重要です。 JavaScriptを使用して提出したい場合は、最初からそれを防ぐ必要があります。そのため、htmlはスクリプトを初めてレンダリングするときには送信しません。 – ssuhat
私もそれに気付きました。再度、感謝します。 :) – n8jadams