2017-08-27 3 views
1

So senden Sie ein Formular, wenn eine Bedingung erfüllt ist.

\t \t 
 
$("form.formajax").submit(function(e) { 
 

 
e.preventDefault(); 
 

 
var data = $(this).serialize(); 
 
var url = $(this).attr("action"); 
 
var form = $(this); // Add this line 
 
$.post(url, data, function(data) { 
 

 

 
$(form).children(".loginresult").html(data.loginresult); 
 

 
if (data.success == 1) 
 
\t { 
 
    // SUBMIT the form here with POST Values (and redirect user) 
 
    } 
 

 

 

 
}); 
 
return false; 
 
});
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 

 

 
    <form class="login formajax" action="abc.php" method="post"> 
 
    <input type="email" > 
 
    <input type= "password"> 
 
    <input type="submit"> 
 
    </form>

Dies ist mein Code ein Formular mit Ajax zu unterbreiten. Es gibt einige Werte zurück.

Es Rückkehr auch 1 oder 0 mit dem Namen data.success

Wenn diese Bedingung if (data.success == 1)

befriedigt wird möchte ich das Formular abzuschicken (den Benutzer umleiten + Postwert abschicken), aber wie?

+0

Haben Sie versucht, $ (this) .submit() '? Oder suchst du etwas anderes? – Nisarg

+0

Noch nicht @NisargShah – Toby

+0

[This] (https://stackoverflow.com/a/11543243/5894241) Antwort zeigt, wie könnte einen Rückruf zum Formular Submission Abschluss Ereignis binden, und dann können Sie den Benutzer auf eine andere Seite umleiten. – Nisarg

Antwort

0

Nach erfolgreicher Formularübergabe können Sie umleiten.

Sie können den Benutzer jQuery#serialize verwenden.

Sein wird die Formulardaten mit key=value1 & key2-value2

$("form.formajax").submit(function(e) { 

    e.preventDefault(); 

    var data = $(this).serialize(); 
    //somecode 
    $.post(url, data, function(data) { 

     if (data.success == 1) { 
      var myNewUrl = "some_url ?" + data; 
      //myNewUrl will be `url?key=value1 & key2-value2` 
      $(location).attr('href', myNewUrl); //jQuery 

     } 
    }); 
    return false; 
}); 

Auf umgeleiteten Seite serialisiert Sie die Query-String-

+0

Aber ich kann keine POST-Werte senden bro – Toby

+0

Sie möchten Formulardaten mit Umleitung senden? –

+0

Ja, bro :))))) – Toby

0

Werte abrufen können Sie mit dem Formular .submit() Funktion auf dem Formular einreichen können. So könnte es mit einem dieser beiden Aussagen erfolgen:

$(this).submit(); // Since you are inside an event handler on the form. 

Oder

$(".login").submit(); // Since login is the css class on the form. 

Dann wird, wie erklärt here, können Sie hören Vorlage Abschlussereignis zu bilden, wie:

$("form.formajax").bind('ajax:complete', function() {...}); 

$("form.formajax").submit(function(e) { 
 

 
    e.preventDefault(); 
 

 
    var data = $(this).serialize(); 
 
    var url = $(this).attr("action"); 
 
    var form = $(this); // Add this line 
 
    $.post(url, data, function(data) { 
 

 

 
    $(form).children(".loginresult").html(data.loginresult); 
 

 
    if (data.success == 1) { 
 
     // SUBMIT the form here with POST Values (and redirect user) 
 
     $(this).submit(); 
 
    } 
 
    }); 
 
    return false; 
 
}); 
 

 
// Wait for form submission. 
 
$("form.formajax").bind('ajax:complete', function() { 
 
    alert("Redirect the user here."); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 

 
<form class="login formajax" action="abc.php" method="post"> 
 
    <input type="email"> 
 
    <input type="password"> 
 
    <input type="submit"> 
 
</form>

+0

Es reicht das Formular unter allen Bedingungen. – Toby

+0

Ich frage mich, warum ... Können Sie versuchen, es im Browser zu debuggen? Vielleicht stimmt etwas mit der AJAX-Antwort nicht. – Nisarg

+0

Der Code funktioniert, wenn ich nur einen einfachen Umleitungscode verwende. Aber wenn ich es mit '$ (. Login) .submit() ersetzen;' Es funktioniert nicht – Toby

Verwandte Themen