簡體   English   中英

通過AJAX發送變量后無法獲得$ _POST值

[英]Unable to get $_POST value after sending variable through AJAX

我有一個HTML表,允許用戶編輯/保存表中的任何行。 表格行中的<td>之一僅包含一個下拉列表,沒有像其他所有列一樣的實際文本。 每當我點擊保存時,我的AJAX請求就將所有數據發送到update.php ,除了帶有下拉菜單的<td>之外,一切都很好。 當我在AJAX成功函數中獲取下拉列表的值時,如果我檢查PHP錯誤日志,則表示保存下拉列表值checkered的變量未定義。

我該如何修復代碼,以便它也可以讀取checkered變量中的內容,並通過AJAX請求發送該內容。

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

  $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);

您定義的ajax數據錯誤,它必須是Type:PlainObject或String或Array ,因此您需要將chekered值附加到dic對象:

dict['checkered'] = checkered;

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM