2016-06-20 8 views
0

私はajaxを使って返信のリストを作成しています。リストの最後でajaxによって提出されたdupplicateを防ぐ

Iは、ユーザが(AJAXでも)応答を追加することを可能にするテキストエリアのフォームを追加しました。

問題

は、ユーザーがページがjsのコードを「知らない」の回答を提出したいので、ときに私は私のメインのPHPページに私のJSに呼び出すことです。私は、jsをajax PHPファイル/ページに追加するとコードは機能しますが、何度も複製され、ユーザーがフォームを送信すると、テキストが何度も送信されます...

私のコンソールにはJSファイルには、私は返信が、私はそれを防ぐにはどうすればよい

をリストアップロードするたびに複製しますか?

+1

コードをご覧ください。 – Ben

+0

コードを投稿してください –

+0

送信ボタンを押した後、送信ボタンを無効にする必要があります。あなたはオンラインで多くの例を見つけることができます。 –

答えて

0

ユーザーが一度押すと送信ボタンを無効にします。 jQueryのを使用して

$("#button").attr('disabled','disabled'); 

ので、ユーザは新しいデータでフォームを再提出することができますAJAXエラーにdisabled属性を削除することを確認します。

あなたはこのようdisabled属性を削除することができます

$('#button').removeAttr('disabled'); 
+0

が、問題は、ユーザーがダブル提出していません。問題は、jsファイルが1回以上読み込まれることです...ここを参照してください:http://stackoverflow.com/questions/37918915/how-to-prevent-duplicate-code-phpajax – user6256769

0

[改善]あなたがたときに、ナビゲーションやF5キーを押しデータを繰り返さないためにしたい場合は、単にあなたが欲しいものは何でもやった後、$ _POST VARSを解放し、イマイチかどうかを確認あなたが好きな場所にあなたをリダイレクトします。例:

/* HERE do the job with ajax response. */ 
    if(!isset($_post['foo'])) header('Location: wherever.php'); 
$_POST['foo']=NULL; 

あなたは$ _GETを使用している場合...それをしない、$ _POST ... $ _POSTを使用するには、あなたの友達です。

FinalyあなたはF5キーを押すと、あなたが郵便でフォームVARSを再送信していないことを確認してください(そうしないと、同じを取得します)。それが起こっている場合は、ページの読み込み時にjQueryで入力をクリアしてください。

$('#inputID').val(''); 
+0

問題は二重提出ではありませんユーザーによって。問題は、jsファイルが1回以上読み込まれることです...ここを参照してください:http://stackoverflow.com/questions/37918915/how-to-prevent-duplicate-code-phpajax – user6256769

+0

それが起こっている場合でも、それを激しく防止するために自由な血管がある。 次に、それらのJSをどこで呼び出すのか確認し、どのようにコード化しましたか。 送信ボタンでonclickイベントが発生したときに、preventdefaultを使用してjquery関数を呼び出すとよいでしょう。どこにいてもチェックすることができます(たとえば、varが複製されている場合など)。== 1)したがって、あなたのjsがこのvarを1にして次のロード時に何も起こらないようにしたら、onlcick jquery関数を使ってSendボタンをもう一度押すと、デフォルトにならずに1に設定してあなたが欲しいものは何でも)。 – JoelBonetR

関連する問題