2016-11-23 5 views
-1

Ich habe ein Problem mit einigen jQuery-Code, der eine Überprüfung durchführen soll und dann das Formular absenden.Formular keine Post-Daten senden

Das Problem ist, dass, wenn die total_hours_for_payperiod weniger als 40 ist dann das Formular übermittelt, aber es keine Post-Daten übermittelt. Wenn ich versuche, Post-Daten in PHP zu verwenden, kann ich das nicht.

Hinweis: Es funktioniert, wenn ich event.preventDefault(); entfernen! Aber ich brauche diese Zeile, weil meine Funktion asynchron ist!

Kann mir jemand helfen?

$("#form_add_entry").submit(function(event) { 
    event.preventDefault(); 

    var data = $(this).serialize(); 
    $.ajax({ 
     type: "POST", 
     dataType: "text", 
     url: "<?=site_url('timesheet/get_hours_for_current_payperiod/')?>", 
     cache : false, 
     data: {data: data}, 
     success: function(resp) { 
      var a = parseInt(JSON.parse(resp)); 

      var entry_hours = parseInt($("#form_add_entry").find('#totalhours').val()) 
      var total_hours_for_payperiod = entry_hours + a 

      if (total_hours_for_payperiod > 40) { 
       $('#biweeklystaffopenovertime').find('#total_remaining').html(total_hours_for_payperiod - 40) 
       $("#addbiweeklytime").modal('hide'); 
       $("#biweeklystaffopenovertime").modal('show'); 
      } else { 
       // Post data isn't submitting, but the form does submit 
       $("#form_add_entry").unbind().submit(); 
      } 
     } 
    }); 
}); 
+0

Untersuchen Sie das Ergebnis von var data = $ (this) .serialize(); Wahrscheinlich hast du dein Problem. Warum es ohne event.preventDefault() funktioniert, kann sein, dass das Formular wie ein normales Formular, der Non-Ajax-Weg, übermittelt wird. – jannej

Antwort

-1

Versuchen Sie dies ... es wird falsch zurückgegeben, und wird nicht das eigentliche Formular zu übermitteln, aber dann können Sie Ihre Ajax Dinge tun.

<form onsubmit="return form_to_submit(); ">Your form.... </form> 
    <script> 

    function form_to_submit(){ 
     var data = $(this).serialize(); 
$.ajax({ 
type: "POST", 
dataType: "text", 
url: "<?=site_url('timesheet/get_hours_for_current_payperiod/')?>", 
cache : false, data: {data: data}, success: function(resp) { var a = parseInt(JSON.parse(resp)); 
var entry_hours = parseInt($("#form_add_entry").find('#totalhours').val()) ; 
var total_hours_for_payperiod = entry_hours + a; 
if (total_hours_for_payperiod > 40) { 
$('#biweeklystaffopenovertime').find('#total_remaining').html(total_hours_for_payperiod - 40) ; 
$("#addbiweeklytime").modal('hide'); 
$("#biweeklystaffopenovertime").modal('show'); 
} else { 
// Post data isn't submitting, but the form does submit 
$("#form_add_entry").unbind().submit(); 
} } 
}); 
return false; 
} 
</script>