动态表单未正确提交AJAX PHP

时间:2020-06-25 07:22:43

标签: php jquery ajax

我正在尝试在表格中动态生成表格并提交,但是我的代码中存在我难以解决的问题,

$(document).ready(function() {
        $('#btnsummary').on('click', function() {
            var date = $('#dddeliverydate').val();
            var soid = $('#sssoid option:selected').val();

            $.ajax({
        url: "tblsum.php",
        method: "POST",
        dataType: 'JSON',

        data:
          
          "&date=" +
          date +
          "&soid=" +
          soid,

        success: function(response) {
            if ( response.length == 0 ) {
    alert("NO DATA FOUND!");
}
else{
        $("#tblsum tbody").empty();
            var len = response.length;
            
            for(var i=0; i<len; i++){
                var invoiceno = response[i].invoiceno;
                var shopname = response[i].shopname;
                var paymentmode = response[i].paymentmode;
                var finalamount = response[i].finalamount;
                if (finalamount==0){
                    return false
                }
                else if (paymentmode=="Credit"){
                    var tr_str = "<tr>" +
                    
                    "<td align='center'>" + invoiceno + "<input type='hidden' name='invoiceno[]' value='"+invoiceno+"'></td>" +
                    "<td align='center'>" + shopname + "</td>" +
                    "<td align='center'>" + paymentmode + "</td>" +
                    "<td align='center'>" + finalamount + "</td>" +
                    "<td align='center'><input type='number' id='finalamount' name='finalamount[]' value='0'></td>" +
                    "</tr>";

                $("#tblsum tbody").append(tr_str);

                }
                else{

                

                var tr_str = "<tr>" +
                    "<td align='center'>" + invoiceno + "<input type='hidden' name='invoiceno[]' value='"+invoiceno+"'></td>" +
                    "<td align='center'>" + shopname + "</td>" +
                    "<td align='center'>" + paymentmode + "</td>" +
                    "<td align='center'>" + finalamount + "</td>" +
                    "<td align='center'><input type='number' id='finalamount' name='finalamount[]' value='" + finalamount + "'></td>" +
                    "</tr>";

                $("#tblsum tbody").append(tr_str);

            }
        }
        $("#tblsum tbody").append("<tr><td colspan='5'><button class='btn btn-success' type='button' id='btnsum'onclick='summary()'>Save</button></td></tr>");
        }
    

        }
    })

        });
    })

如果最终金额为0,则出现两个问题,然后没有出现保存按钮,当我提交发票的第一字段时,不要在下一页提交, 下面是提交功能

function summary(){
    $(document).ready(function(e) {
       
        
            var date = $('#dddeliverydate').val();
            var soid = $('#sssoid option:selected').val();
            var form = $('#formsum').serialize();
            

            $.ajax({
        url: "test.php",
        method: "POST",
        data:
          "&date=" +
          date +
          "&soid=" +
          soid+
          "&form=" +
          form,
          success: function(data) {
            var w = window.open('about:blank', 'windowname');
    w.document.write(data);
    }
          
            })
        })
    }

下面是我的PHP代码。

for($count = 0; $count<count($_POST['invoiceno']); $count++){
    $data = array(
    
        $invoiceno = $_POST['invoiceno'][$count],
        $amount = $_POST['finalamount'][$count],
);
echo "Invoice NO ".$invoiceno." Amount ".$amount.'<br>';
}

对不起,英语不好。

1 个答案:

答案 0 :(得分:1)

我在return 停止之前告诉过您,因此执行之后的所有代码都已过时。在这种情况下,当finalamount == 0停止执行该函数并返回到它开始的地方。因此,永远不会到达创建提交按钮的代码。通过适当的缩进,您可以看到:

$(document).ready(function() {
    //<< ===== START START START of onclick function
    $('#btnsummary').on('click', function() {
       ....                                                                
       $.ajax({                                                        
          url: "tblsum.php",
          ....
          success: function(response) {  
             if ( response.length == 0 ) { .... }
             else{
                $("#tblsum tbody").empty();
                ....
                for(var i=0; i<len; i++){
                   var invoiceno = response[i].invoiceno;
                   var finalamount = response[i].finalamount;
                   ....                                                        
                   if (finalamount==0){                        
                      return false   
              // STOP EXECUTING THIS FUNCTION 
              // AND GO DIRECTLY TO END OF FUNCTION ================= >>
              // code after this will NOT be executed
                   }
                   else if (paymentmode=="Credit"){....}
                   else{....}
                }
              // if finalamount == 0, this will never be executed
                $("#tblsum tbody").append("<tr><td colspan='5'><button class='btn btn-success' type='button' id='btnsum'onclick='summary()'>Save</button></td></tr>");
             }
          }
       })
    });
    // ===== END END END of onclick function << ===============
    // continue executing script from here
})

因此,您可以使用continue而不是return来跳过for loop中的一个问题。

相关问题