2016-04-05 6 views
0

Mein Ajax Erfolg/Fehler Ereignis wird nicht ausgelöst. Ich benutze jquery Validierung und innerhalb, dass ich Ajax für Formular senden verwende. Meine Formulare werden gesendet, aber der Rückgabewert (JSON-Daten) wird nicht wie in AJAX beschrieben angezeigt.Ajax arbeitet nicht mit jquery validieren Plugin

Ich habe versucht, alert() zu verwenden, aber es wird auch nicht ausgelöst.

<script type="text/javascript"> 
$('document').ready(function() 
{ 

    $("#alert-form").validate({ 
      ignore: '', 
      messages: { 
      select2Start: { 
       required: "Please select your starting point.", 

      } 
      }, 

     //}); 
     submitHandler: function(form) { 

       e.preventDefault; 
       var btn = $('#publish'); 
       btn.button('loading'); 
       alert('valid form submission'); 

       $.ajax({ 
        type: 'post', 
        url:$('form#alert-form').attr('action'), 
        cache: false, 
        dataType: 'json', 
        data: $('form#alert-form').serialize(), 
        beforeSend: function() { 
         $("#validation-errors_alert").hide().empty(); 
        }, 
        success: function(data) { 
         if(data.success == false) 
          { 
           var arr = data.errors; 
           $.each(arr, function(index, value) 
           { 
            if (value.length != 0) 
            { 
             $("#validation-errors_alert").append('<div class="alert alert-danger"><strong>'+ value +'</strong><div>'); 
            } 
           }); 
           $("#validation-errors_alert").show(); 
           btn.button('reset');        
          }else{ 
          // alert("Job Alert Configured successfully."); 
           $("#job_success_alert").append('<div class="alert alert-success"><strong>Alert Configured successfully.</strong><div>'); 
          } 
        }, 
        error: function(xhr, textStatus, thrownError) { 
        alert('Something went to wrong.Please Try again later...'); 
         alert(thrownError); 
         btn.button('reset'); 

        } 
       });    
       return false; 
     } 
      }); 

     }); 

    </script> 
+1

'e.preventDefault' funktioniert aus zwei Gründen nicht: 1) Es gibt keine Variable' e', 2) um eine Funktion aufzurufen, hinter der Klammern stehen müssen. Du brauchst es auch nicht, weil das Validierungs-Plugin das automatisch macht. – Barmar

+1

Die Funktion 'success:' zeigt die JSON-Daten nirgends an. Es wird nur die Meldung "Warnung erfolgreich konfiguriert" angezeigt. – Barmar

+1

Wird die Warnung "gültiges Formular senden" angezeigt? – Barmar

Antwort

1

Wie Barmer in seinem ersten Kommentar darauf hingewiesen, gibt es mehrere Probleme mit diesem Code ...

submitHandler: function(form) { 
    e.preventDefault; 
    .... 
  1. Variable e nicht innerhalb dieser submitHandler Funktion nicht vorhanden ist.

  2. Sie haben die Klammer nicht in .preventDefault() eingefügt.

  3. Sie brauchen .preventDefault() in diesem Kontext nicht, da das Plugin bereits die Standard-Übermittlung blockiert. Entfernen Sie diese Zeile vollständig.

NOTES:

Für eine gute Lesbarkeit, mischen Allman nicht mit 1TBS Artcode Formatierung ... nur in ganz konsistent sein. Zusätzlich könnte es am besten sein, avoid using Allman in JavaScript insgesamt.