2016-04-20 5 views
0
function post() 
{ 
    var cvs = $('#client-nbr').val(); 
    var cs = $('#cs').val(); 
    $.post('http://sitea.com/a.php',{postcvs:cvs,postch1:cs}); 
    return false; 
} 

Aufruf der Funktion onsubmit einreichen:

<form action="http://siteb.com/b.php" method="post" id="formID" onsubmit="post()"> 
    <input type="text" name="client-nbr" id="client-nbr" /> <br> 
    <input type="text" name="cs" id="cs" /> <br> 
    <button type="submit" name="submit" id="submit">subscribe</button> 
</form> 

ich die function post() warten soll danach beenden Posting Standardaktion seiner möglichen einreichen?

+0

Warum machst du nicht einfach zwei $ .posts mit jQuery statt einer über Standardaktion und eine mit jQuery? Löse den zweiten Post in einer .done- oder .complete-Funktion eines anderen Posts aus. – tylerism

+0

tylerism ich habe nicht verstanden was meinst du kannst du ein beispiel geben? – Sharondelmar

Antwort

2
<form action="http://siteb.com/b.php" method="post" id="formID"> 
    <input type="text" name="client-nbr" id="client-nbr" /> <br> 
    <input type="text" name="cs" id="cs" /> <br> 
    <!-- http://stackoverflow.com/a/23968244/2240375 --> 
    <button type="submit" name="submit_btn" id="submit_btn">subscribe</button> 
</form> 
<script> 
    $("#formID").submit(function (objEvent) { 
     // Prevent your form submition 
     objEvent.preventDefault(); 
     $.ajax({ 
      type: 'POST', 
      url: "http://sitea.com/a.php", 
      data: { 
       postcvs: $('#client-nbr').val(), 
       postch1: $('#cs').val() 
      }, 
      success: function (strResponseData) { 
       // After successfull ajax request submit the form 
       $("#formID")[0].submit(); 
      } 
     }); 
    }) 
</script> 
+0

Funktioniert es nach Ihrer Anforderung? –

+0

Ali Khanusiya Der Code funktioniert nur mit der Site A und nach der Seite einzufrieren kann keine Standardaktion zu Siteb.com/b.php – Sharondelmar

+0

@AliKhanusiya, Sie können das Formular nicht aus dem submit-Ereignis senden! Im besten Fall verbietet der Browser dies, im schlimmsten Fall wird eine unendliche Rekursion ausgelöst. Klarstellung: Das von Ihnen aufgerufene submit() löst das submit-Ereignis erneut aus, das wegen objEvent.preventDefault() blockiert wird. – ChiralMichael

1

Wenn diese js Skript an der Stelle A gehostet werden Sie in der Lage sein, es zu schreiben:

   $.ajax({ 
        url: 'http://sitea.com/a.php', 
        type: 'post', 
        data: {"postcvs":cvs, "postch1":cs}, 
        success: function(data, status) { 
         console.log("success!"); 
        }, error: function(xhr, desc, err) { 
         console.log(xhr); 
         console.log("Details: " + desc + "\nError:" + err); 
        } 
       }); // end ajax call 

Allerdings, wenn Ihr Skript vor Ort B ist, werden Sie nur in der Lage sein, um vor Ort zu posten B. More on the same origin policy here.

+0

fruitoftheloins ja das js Skript wird an der Stelle A bewirtet, aber ich kann Daten in a.php erhalten! Danke für deine Antwort – Sharondelmar

2

$.post() gibt promise object zurück. Ein Versprechen-Objekt verfügt über verschiedene Methoden, um Ereignisse in Bezug auf die Fertigstellung einer Aufgabe einzuhängen, wie "erledigt". Wenn ich streng erst nach einem externen Ajax-Aufruf abgeschlossen warten musste, bevor meine Form Post tun würde ich folgendes tun:

Javascript

$('#my-button').click(function(e) { 
    e.preventDefault(); 
    var cvs = $('#client-nbr').val(); 
    var cs = $('#cs').val(); 
    $.post('http://sitea.com/a.php',{postcvs:cvs,postch1:cs}).done(function() { 
     $(e.target).closest("form").submit(); 
    }); 

    return false; 
} 

HTML

<form action="http://siteb.com/b.php" method="post" id="formID"> 
    <input type="text" name="client-nbr" id="client-nbr" /> <br> 
    <input type="text" name="cs" id="cs" /> <br> 
    <button id="my-button" type="submit" name="submit" id="submit">subscribe</button> 
</form> 

Allerdings scheint es unwahrscheinlich, dass Sie müssen tatsächlich auf die Post-Ergebnisse warten. Wenn es keine Timing-Bedenken gibt und du nichts mit den Post-Ergebnissen zu tun hast, schlage ich dir vor, einfach zu feuern und zu vergessen.

Verwandte Themen