2010-12-11 6 views
1

In den obigen Codes Fenster umleiten zu product_group.php ohne jquery.post (...). Wenn ich alert (...) vor der Zeile window.location ... verwende, funktioniert das Update jquery.post() einwandfrei. Ich denke, es ist ein Problem der jQuery Antwortzeit. Ich konnte es nicht klären.Rufen Sie jquery auf, die nicht richtig funktionieren

Bitte helfen.

Antwort

1

Sie müssen den Standortwechsel für die Post innerhalb des Callback setzen. Es ändert den Standort (Weiterleitung), bevor der Beitrag abgeschlossen werden kann.

$("#Save").click(function() { 
    var numForms = $(".frm_product_group").length; 
    $(".frm_product_group").each(function() { 
     $.post("save_new_product_group.php", $(this).serialize(), function (data) { 
      if (data == false) { 
       alert("Error: Try again"); 
       return false; // Prevent more posts from being sent after error 
      } else { 
       numForms--; 
       if (numForms === 0) { 
        window.location.href = "product_group.php"; 
       } 
      } 
     }); 
    }); 
}); 
+0

@ box9: Entschuldigung, funktioniert nicht Ihren Vorschlag. – Iqbal

+0

@Iqbal - was passiert? Wird das Fenster auf 'product_group.php' umgeleitet? Werden irgendwelche Beiträge durchkommen? Ich vermute, dass nur ein Post durchkommt. –

+0

@Iqbal - Aktualisierte Antwort, um mit den verschiedenen Formularen umzugehen, da die Serverantwort in beliebiger Reihenfolge zurückkommen und die window.location.href-Änderung früh auslösen kann. –

0

Sie können einen Event.preventDefault Aufruf fehlen, so dass die Taste, um das Formular nicht speichern nicht schreiben

$("#Save").click(function (e) { 
    e.preventDefault(); 
    var lastForm = $(".frm_product_group").size() - 1; 
+0

nichts fehlt und Speichern Schaltfläche nicht das Formular buchen. Alle werden von jQuery gesteuert. Problem könnte in Ajax Antwort sein ... aber ich kann nicht herausfinden. – Iqbal

+0

Können Sie das Markup posten? – Jaime

+0

e.preventDefault() hat das Problem nicht gelöst. – Iqbal

0

Ich hatte das gleiche Problem an einem anderen Tag und ja, es ist ein Problem von Jquery zu schnell arbeiten. Meine Lösung bestand darin, den Aufruf der Umleitung mit einer setTimeOut() zu verzögern. Ihr Code würde so aussehen:

$("#Save").click(function() { 
     var lastForm = $(".frm_product_group").size() - 1; 
     $(".frm_product_group").each(function (index) { 
      $.post("save_new_product_group.php", $(this).serialize(), function (data) { 
       if (data == false) { 
        alert("Error: Try again"); 
       } 
      }); 
      if (index == lastForm) { 
       setTimeout("foo",1000); 

      } 
     }); 
    }); 

    function foo() 
    { 
     window.location.href = "product_group.php"; 
    } 
+0

Ich stimme box9 zu. Verzögerung könnte Lösung sein, aber keine gute Lösung. Danke user537417 – Iqbal

Verwandte Themen