我最近开始从基础开始学习 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。
data: dataToSend, processData: false, contentType: false,
您已经告诉 jQuery not 处理数据(因此 XHR 会将您的对象转换为字符串
[object Object]
,这是无用的)并且不要覆盖 Content-Type
(因此 XHR 会将其设置为text/plain
并且 PHP 不会尝试解析数据)。
不要这样做。