2010-12-29 12 views
1

Ich möchte einen Ajax-Aufruf am submit.jQuery: form und ajaxcall

<form id="editMail" action="" method="post"> 
    <input name="user_email" type="text" value="mail" maxlength="50" id="user_email" style="width:200px;"> 
    <input name="submit" type="submit" id="submit_editMail" value="Ändra"> 
</form> 


    $('#editMail').submit(function() { 
      $.ajax({ 
      type: "POST", 
      url: "misc/email/activate.php", 
      data: { action: 'edit', user_email: new_usermail }, 
      success: function(r){ 
      if(typeof(r.error) != 'undefined') { 
      if(r.error != ''){ 
      alert(r.error); 
      } 
       }else{ 
      alert('OK'); 
     } 
     }); 
    }); 

Aber immer noch nichts passiert ist, tut es den Ajax-Aufruf tun, sondern refersh nur die Seite sie eingeschaltet ist. Ich habe versucht, onclick = "return false;" auf die Schaltfläche Senden, aber dann passiert überhaupt nichts

Antwort

1

Zurück false in Ihrem Handler. Andernfalls wird die POST-Anfrage gestartet, dann wird die Standard-Formularübergabe durchgeführt. Sie können auch die preventDefault Funktion des Ereignisobjekts wie folgt verwenden:

$('#editMail').submit(function(event) { 
    $.ajax({ 
     type: "POST", 
     url: "misc/email/activate.php", 
     data: { action: 'edit', user_email: new_usermail }, 
     success: function(r){ 
      if(typeof(r.error) != 'undefined') { 
       if(r.error != ''){ 
        alert(r.error); 
       } 
      }else{ 
       alert('OK'); 
      } 
     } 
    }); 
    event.preventDefault(); 
}); 

Edit:

Stellen Sie sicher, Ihr Skript nicht ausgeführt wird, bevor die Seite fertig geladen wurde.

$(document).ready(function() { 
    $('#editMail').submit(function(event) { 
     $.ajax({ 
      type: "POST", 
      url: "misc/email/activate.php", 
      data: { action: 'edit', user_email: new_usermail }, 
      success: function(r){ 
       if(typeof(r.error) != 'undefined') { 
        if(r.error != ''){ 
         alert(r.error); 
        } 
       }else{ 
        alert('OK'); 
       } 
      } 
     }); 
     event.preventDefault(); 
    }); 
}); 
+0

es trägt immer noch, auch mit Rück versucht false; und ich sehe keine Ajax-Aufrufe Ich denke, das Skript läuft noch nicht .. sind die Selektor richtig? – Karem

+0

Ihr Wahlschalter ist richtig; Sie binden 'submit' Event-Handler zu' form'-Elementen. Versuchen Sie, eine "Warnung" in Ihrem Handler zu setzen, um zu sehen, ob das Skript überhaupt ausgeführt wird. Ihr JavaScript wird möglicherweise nicht ausgeführt, nachdem die Seite geladen wurde, so dass der Selektor möglicherweise das Formularelement nicht findet. – Jacob

+0

Oh, und @ jondavidjohn ist richtig, dass Sie Skriptfehler hatten. Mein Beispielskript hat sie behoben. – Jacob

1

Sie vermissen die Schließbügel Gruppe für Ihre .submit();: Sie können Ihr Skript in einem ready Handler, wie diese wickeln müssen

Auch Sie hatten unnötig); Schließen Sie Ihre "Erfolgs" -Funktion.

Außerdem wurde die erforderliche "return false" hinzugefügt, um Standardaktionen zum Senden zu verhindern.

korrigiert:

$('#editMail').submit(function() { 
    $.ajax({ 
     type: "POST", 
     url: "misc/email/activate.php", 
     data: { action: 'edit', user_email: new_usermail }, 
     success: function(r){ 
      if(typeof(r.error) != 'undefined') { 
       if(r.error != ''){ 
        alert(r.error); 
       } 
      }else{ 
       alert('OK'); 
      } 
     } 
    }); 
    return false; 
}); 
+0

Danke für die Antwort! – Karem

+0

Also finde ich das Problem, und dann markierst du die richtige Antwort des Typen, der meine Antwort in seinem Code enthält? schwach. – jondavidjohn