通过AJAX发送变量后无法获得$_POST值

时间:2022-10-08 07:40:51

I have an HTML table that allows a user to edit/save any row in the table. One of the <td> in the table rows contains only a dropdown and no actual text like all of the other columns. Whenever I hit save, my AJAX request sends all of the data through to update.php just fine except for the <td> with the dropdown. While I am getting the value of the dropdown in my AJAX success function, if I check my PHP error log, it says that the variable that holds the value of the dropdown, checkered, is undefined.

我有一个HTML表格,允许用户在表格中编辑/保存任何一行。表行中有一个只包含下拉菜单,不包含与所有其他列相同的实际文本。每当我点击save,我的AJAX请求就会将所有数据发送到update。除了带有下拉菜单的之外,php没有问题。当我在AJAX success函数中获取下拉菜单的值时,如果我检查PHP错误日志,它会说包含下拉菜单值的变量是未定义的。

How can I fix my code so that it will also read whats in my checkered variable and send that through my AJAX request as well.

如何修改代码,使它也能读取我的checkered变量中的内容,并通过AJAX请求发送。

JavaScript (the first 2 lines after the beginning of my function are what gets the value of the dropdown selection):

JavaScript(函数开始后的前两行是下拉菜单的值):

$(document).on("click", "#table .edit", function () {

  var $row = $(this).parents('tr');
  var checkered = $row.find($(".selected")).val();

  var $this = $(this);

  $this.closest('tr').find('select').attr("disabled", false);  

  var tds = $this.closest('tr').find('td').filter(function () {
    return $(this).find('.edit').length === 0;
  });
  if ($this.val() === 'Edit') {
    $this.val('Save');

    tds.not('.dropdown-select').prop('contenteditable', true);

  } else {
    var isValid = true;
    var errors = '';
    var elements = tds;
    var dict = {};
    elements.each(function (index, element) {
      var type = $(this).attr('class');
      var value = (element.tagName == 'INPUT') ? $(this).val() : $(this).text();

      // ----- Switch statement that provides validation for each table cell -----
      switch (type) {
        case "species":
          if (value) {
              dict["Species"] = value;
              break;
          }
          else {
            isValid = false;
            errors += "Please enter a valid Species\n";
          }
          break;
        case "container":
          if (value) {
              dict["Container"] = value;
              break;
          }
          else {
            isValid = false;
            errors += "Please enter Yes or No\n";
          }
          break;
        case "supp-name":
          if (value) {
              dict["Supplier-Name"] = value;
            break;
          }
          else {
            isValid = false;
            errors += "Please enter a valid Supplier Name\n";
          }
          break;
        case "supp-sku":
          if (value) {
              dict["Supplier-SKU"] = value;
              break;
          }
          else {
            isValid = false;
            errors += "Please enter a valid Supplier SKU\n";
          }
          break;
        case "newsku":
          if (value) {
              dict["Current-SKU"] = value;
            break;
          }
          else {
            isValid = false;
            errors += "Please enter a valid Current SKU\n";
          }
          break;
        case "mill":
          if (value) {
              dict["Mill"] = value;
              break;
          }
          else {
            isValid = false;
            errors += "Please enter a valid Mill\n";
          }
          break;
        case "lead-time":
          if (value) {
              dict["Lead-Time"] = value;
              break;
          }
          else {
            isValid = false;
            errors += "Please enter a valid Lead Time\n";
          }
          break;
        case "less-than-unit-cost":
          if (value) {
              dict["Less-Than-Unit-Cost"] = value;
              break;
          }
          else {
            isValid = false;
            errors += "Please enter a valid Less Than Unit Cost\n";
          }
          break;
        case "unit-cost":
          if (value) {
              dict["Unit-Cost"] = value;
              break;
          }
          else {
            isValid = false;
            errors += "Please enter a valid Unit Cost\n";
          }
          break;
        case "mill-direct-cost":
          if (value) {
              dict["Mill-Direct-Cost"] = value;
            break;
          }
          else {
            isValid = false;
            errors += "Please enter a valid Mill Direct Cost\n";
          }
          break;
        case "unit-quantity":
          if (value) {
              dict["Unit-Quantity"] = value;
            break;
          }
          else {
            isValid = false;
            errors += "Please enter a valid Unit Quantity\n";
          }
          break;
        case "bundle-cost":
          if (value) {
              dict["Bundle-Cost"] = value;
              break;
          }
          else {
            isValid = false;
            errors += "Please enter a valid number\n";
          }
          break;
        case "mixed-unit-price":
          if (value) {
              dict["6+-Mixed-Unit-Price"] = value;
            break;
          }
          else {
            isValid = false;
            errors += "Please enter a valid number\n";
          }
          break;
        case "uom":
          if (value) {
              dict["UOM"] = value;
              break;
          }
          else {
            isValid = false;
            errors += "Please enter a valid UOM\n";
          }
          break;
        case "mill-loc":
          if (value) {
              dict["Mill-Location"] = value;
              break;
          }
          else {
            isValid = false;
            errors += "Please enter a valid Mill Location\n";
          }
          break;
        case "id":
              dict["ID"] = value;
              break;

      }
    })
    if (isValid) {
        console.log(dict);
        console.log(checkered);
      $this.val('Edit');
      tds.prop('contenteditable', false);
      $this.closest('tr').find('select').attr("disabled", true);
      var request = $.ajax({
          type: "POST",
          url: "update.php",
          data: dict, checkered,
          success: function(data){
              console.log(dict);
              console.log(checkered);
            }
        });

        request.done(function (response, textStatus, jqXHR){
          if(JSON.parse(response) == true){
            console.log("row updated");
          } else {
            console.log("row failed to updated");
            console.log(response);
            console.log(textStatus);
            console.log(jqXHR);
          }
        });
      }
    }
 });

update.php:

update.php:

  $species = $_POST['Species'];
  $container = $_POST['Container'];
  $supp_name = $_POST['Supplier-Name'];
  $supp_sku = $_POST['Supplier-SKU'];
  $current_sku = $_POST['Current-SKU'];
  $mill = $_POST['Mill'];
  $lead_time = $_POST['Lead-Time'];
  $less_than_unit_cost = $_POST['Less-Than-Unit-Cost'];
  $unit_cost = $_POST['Unit-Cost'];
  $mill_direct_cost = $_POST['Mill-Direct-Cost'];
  $unit_quantity = $_POST['Unit-Quantity'];
  $bundle_cost = $_POST['Bundle-Cost'];
  $mixed_unit_price = $_POST['6+-Mixed-Unit-Price'];
  $uom = $_POST['UOM'];
  $mill_loc = $_POST['Mill-Location'];
  $id = $_POST['ID'];
  $selected = $_POST['checkered'];

  $host="xxxxxxx"; 
  $dbName="xxxx"; 
  $dbUser="xxxxxxxxxxxx"; 
  $dbPass="xxxxxxxxx";

  $pdo = new PDO("sqlsrv:Server=$host;Database=$dbName", $dbUser, $dbPass);
  $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

  $sql = "UPDATE Example_Table SET [Species] = '$species',
  [Container] = '$container',
  [Supplier-Name] = '$supp_name',
  [Supplier-SKU] = '$supp_sku',
  [Current-SKU] = '$current_sku',
  [Mill] = '$mill',
  [Lead-Time] = '$lead_time',
  [Less-Than-Unit-Cost] = '$less_than_unit_cost',
  [Unit-Cost] = '$unit_cost',
  [Mill-Direct-Cost] = '$mill_direct_cost',
  [Unit-Quantity] = '$unit_quantity',
  [Bundle-Cost] = '$bundle_cost',
  [6+-Mixed-Unit-Price] = '$mixed_unit_price',
  [UOM] = '$uom',
  [Mill-Location] = '$mill_loc',
  [Price-Selected] = '$selected'

WHERE ID = '$id'";

  $stmt = $pdo->prepare($sql);  
  $result = $stmt->execute();
  echo json_encode($result);

1 个解决方案

#1


2  

Your defining your ajax data wrong, it must be of Type: PlainObject or String or Array , so you need to append the chekered value to the dic object:

您对ajax数据的定义是错误的,它必须是类型的:纯对象或字符串或数组,因此您需要向dic对象追加che值:

dict['checkered'] = checkered;

var request = $.ajax({
      type: "POST",
      url: "update.php",
      data: dict,
      success: function(data){
          console.log(dict);
          console.log(checkered);
        }
    });

#1


2  

Your defining your ajax data wrong, it must be of Type: PlainObject or String or Array , so you need to append the chekered value to the dic object:

您对ajax数据的定义是错误的,它必须是类型的:纯对象或字符串或数组,因此您需要向dic对象追加che值:

dict['checkered'] = checkered;

var request = $.ajax({
      type: "POST",
      url: "update.php",
      data: dict,
      success: function(data){
          console.log(dict);
          console.log(checkered);
        }
    });