2016-06-20 18 views
0

Ich benutze Ajax, um eine Liste von Antworten zu erstellen.verhindern dupplicate von ajax eingereicht

Am Ende der Liste habe ich textarea Formular hinzugefügt, die Benutzer hinzufügen können (auch mit Ajax).

Das Problem ist, dass ich zu meinem JS in meiner Hauptphp-Seite rufe, also, wenn Benutzer Antwort einreichen will, "kennt" die Seite nicht den js Code. Wenn ich die JS der AJAX-PHP-Datei/Seite hinzufügen, wird der Code funktionieren, aber es wird mehrmals dupliziert werden und wenn Benutzer Formular abschicken wird der Text viele Male gesendet werden.

In meiner Konsole sehe ich das Die JS-Datei dupliziert jedes Mal, wenn ich die Antwortenliste lade

Wie kann ich es verhindern?

+1

Können wir Ihren Code bitte sehen? – Ben

+0

Geben Sie bitte Ihren Code ein –

+0

Sie müssen die Übermittlungsschaltfläche deaktivieren, nachdem sie gedrückt wurde. Sie können viele Beispiele online finden. –

Antwort

0

Deaktivieren Sie die Senden-Schaltfläche, nachdem der Benutzer sie einmal gedrückt hat.
Mit jQuery:

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

Stellen Sie sicher, disabled Attribut auf AJAX Fehler entfernen so können Benutzer das Formular mit neuen Daten erneut vorlegen.

Sie können disabled Attribut wie folgt entfernen:

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

, aber das Problem ist nicht mit doppelten Einreichung durch den Benutzer . Das Problem ist, dass die js-Datei mehr als 1 Mal geladen wird ... siehe hier: http://StackOverflow.com/Questions/37918915/How-to-prevent-duplicate-code-phpajax – user6256769

0

[verbesserte] wenn Sie keine Daten wiederholen möchten, wenn die Navigation oder F5 drücken, einfach die _POST Vars $ frei, nachdem, was Sie tun wollen, und prüfen Sie, ob isnt Set (vor der Reinigung natürlich) umleiten Sie wo immer Sie wollen. Beispiel:

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

Wenn Sie $ _GET verwenden sind ... tun es nicht, verwenden Sie $ _POST ... $ _POST ist dein Freund.

Stellen Sie sicher, dass Sie die Form Vars nicht per Post zurücksenden, wenn Sie F5 drücken (ansonsten erhalten Sie dasselbe). Wenn dies der Fall ist, löschen Sie Ihre Eingaben mit jQuery beim Laden der Seite.

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

Das Problem ist nicht mit Doppel reichen vom Benutzer. das Problem ist, dass die js-Datei mehr als 1 Mal geladen wird ... siehe hier: http://StackOverflow.com/Questions/37918915/How-to-prevent-duplicate-code-phpajax – user6256769

+0

Auch wenn es passiert, müssen Sie free vars, um es drastisch zu verhindern. Dann überprüfen Sie, wo Sie diese JS anrufen und wie haben Sie es codiert. Es ist eine gute Praxis, eine jquery Funktion mit prepatdefault aufzurufen, wenn onclick Ereignis auf Senden-Taste. dann können Sie überprüfen, wo Sie wollen (zum Beispiel wenn var dupliziert wurde!== 1) also, wenn Ihre js macht was immer Sie können diese Variable auf 1 setzen und nichts wird beim nächsten Laden passieren, dann, wenn Sie erneut die Senden-Taste mit onlcick jquery Funktion mit Standard verhindern, können Sie es auf 1 setzen und tun wieder was immer du willst). – JoelBonetR

Verwandte Themen