PHP 中未收到 AJAX post 数据

问题描述 投票:0回答:1

我最近开始从基础开始学习 PHP。在学习了一些教程之后,我试图学习一些东西,但在这里我遇到了一个问题,在访问不同的 URL 来解决类似问题后,但无法解决我的问题。

我有一个页面,用户在表单中输入数据,并使用“添加”按钮将数据添加到网格(表)中。在“保存”按钮上,表数据将使用 Ajax 发送到 PHP。除了此表数据之外,同一表单上还有 3 个文本字段,其数据未添加到该表中,并且这些文本字段数据也通过使用 Ajax 调用发送到 PHP。这是我的“保存”按钮代码。

$("#save").on("click", function (e) {
        e.preventDefault();
        debugger
        if (!iQuantity || !iDiscount) { // This is checking validation.
            $("#message").fadeIn(1000).html(`<div class="alert alert-warning">Please fill all the fields</div>`);
            $("#message").fadeOut(3000);
        } 
              
        if ($("#amountPayable").val() === "" || $("#amountPayable").val() == 0 || $("#amountPaid").val() === "" || $("#amountPaid").val() == 0 
            || $("#discountGiven").val() === "" ) {

            $("#message").fadeIn(1000).html(`<div class="alert alert-warning">Please fill all the fields</div>`);
            $("#message").fadeOut(3000);

        } else {

                var tableData = [];
                $('#addTable tbody tr').each(function () {
                    debugger
                    var rowData = {
                        itemId: $(this).find('td:eq(0)').text(),    // first column in row is trainee  (on index 0)
                        saleId: $(this).find('td:eq(1)').text(),   // second column in row is title
                        qty: $(this).find('td:eq(3)').text(),   // 4th column in row is attend
                        amount: $(this).find('td:eq(4)').text(),  // 5th column in row is trainer                        
                    };
                    tableData.push(rowData);
                });

            var formFields = {   // This takes text fields data
                amountPayable: $("#amountPayable").val(),
                amountPaid: $("#amountPaid").val(),
                discountGiven: $("#discountGiven").val(),
            };

            // Here I'm making object of both above objects.
            var dataToSend = {
                td: JSON.stringify(tableData), // Grid data
                ff: JSON.stringify(formFields), // Text fields data
            };
            

            console.log("ok");
            $("#message").html("");
            debugger
            $.ajax({
                url: "../add-pages/add-orders.php",
                type: "POST",
                data: dataToSend,
                processData: false,
                contentType: false,
                
                success: function (receivedData) {
                    debugger
                    var dt = receivedData;
                    $('#message').fadeIn(1000).html(receivedData);
                    $("#message").fadeOut(3000);

                    // --------------------------------------------- For Claring the Form Fields, ---------------------------------------------
                    $(':input', '#addOrdersData')
                        .not(':button, :submit, :reset, :hidden')
                        .val('')
                        .prop('checked', false)
                        .prop('selected', false);
                    
                    $("#update").attr("disabled", true);
                }
            });
        }
    });

这是我收到代码的 PHP 代码:


    <?php
     date_default_timezone_set('Asia/Karachi');

     $tableData = json_decode($_POST['td']); // Grid data
     $ff = json_decode($_POST['ff']); // Grid data
   ?>

我在 PHP 中收到的错误是:

警告:第 4 行 C:\xampp\htdocs\superStore dd-pages dd-orders.php 中未定义数组键“td”

请指导我哪里发生了错误。

非常感谢你,SOF。

php jquery ajax
1个回答
0
投票
    data: dataToSend,
    processData: false,
    contentType: false,

您已经告诉 jQuery not 处理数据(因此 XHR 会将您的对象转换为字符串

[object Object]
,这是无用的)并且不要覆盖
Content-Type
(因此 XHR 会将其设置为
text/plain
并且 PHP 不会尝试解析数据)。

不要这样做。

© www.soinside.com 2019 - 2024. All rights reserved.