一组将数据从jQuery传递到PHP文件

时间:2019-02-25 23:26:09

标签: php jquery json

我有一个表,有些<td>有数据,但不是全部。在按钮上单击,我运行jQuery函数,该函数检查每个<td>以及存在数据的位置,以获取数据。 之后,数据将传递到php文件并插入到我的数据库中。一切正常。

function insert_data() {
  if(confirm("\nAre you sure?.\n")) {
    $("#myTable td").each( function() {
      var worker = $(this).attr("id");
      var quarter = $(this).attr("title");
      var station = $(this).attr("name");
      var type = $(this).attr("class");
      $.post({ url: "insert_data.php", data: {worker:worker, quarter:quarter, station:station, type:type} });
    });
  }
  else { return false; }
}

我想知道是否不是像每个<td>那样用ajax调用php,也许有办法像一个包一样传递数据?我在这里和其他网站上至少检查了几十篇不同的文章,而且似乎经常将JSON用于此目的。 我从未使用过JSON,经过几天的尝试不同的方法,仍然无法弄清楚我在做什么错。我将不胜感激。 我需要做的就是将表中的数据传递到php文件中(并在其中解压缩)。我不需要在html页面上同时显示它。

这是不起作用的版本之一:

JS:

function insert_data() {
  if(confirm("\nAre you sure?.\n")) {
    var myArray = []; // var to store all records for json data transfer
    $("#myTable td").each( function() {
      var worker = $(this).attr("id");
      var quarter = $(this).attr("title");
      var station = $(this).attr("name");
      var type = $(this).attr("class");
      var record = {worker:worker, quarter:quarter, station:station, type:type}; // sd - short for schedule data
      myArray.push(record); // add every record to same array
    });
      console.log(myArray);
      $.post({ url: "insert_data.php", data: {myArray: myArray }, success: function(data){ alert('Items added'); }, error: function(e){ console.log(e.message); } });
  }
  else { return false; }
}

在控制台中,我看到以下数据(看来该数据已被添加到阵列中而没有任何问题):

(4) [{...}, {...}, {...}, {...}]
0: {worker: "556", quarter: "1", station: "abc_15", type: "rework"}
1: {worker: "147", quarter: "2", station: "abc_37", type: "rework"}
2: {worker: "345", quarter: "3", station: "abc_15", type: "rework"}
3: {worker: "12", quarter: "4", station: "abc_15", type: "rework"}

PHP:

  $mySchedule = array();
  $mySchedule[] = $_POST["myArray"];  // get the json array
  var_dump($mySchedule);
  foreach ($mySchedule as $sched) {
    $worker = $sched['worker']; // or: $sched->worker; - doesn't change the result
    $quarter = $sched['quarter'];
    $station = $sched['station'];
    $type = $sched['type'];
    // code to insert data into my DB - works fine when I pass data one by one instead of array
  }

HTML: 我还将此脚本与表一起添加到页面中:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-json/2.6.0/jquery.json.min.js"></script>

我不确定是否需要。

- 感觉问题出在我如何“拆包”阵列的方式上。但是我不确定...我试图遵循我在这里可以找到的所有建议,但是也许我只是错过了一些非常重要的东西。 我尝试过:

$mySchedule[] = json_decode($_POST["myArray"]); // in insert_data.php

data:  { json: JSON.stringify(myArray) } // in jQuery function

和其他一些建议...

1 个答案:

答案 0 :(得分:0)

更新

我从一所大学获得了一些帮助。因此,jQuery代码保持不变。 PHP代码进行了一些小的更改,现在可以正常工作。 PHP中的更改:

$mySchedule = $_POST["myArray"];  // get the json array

代替:

$mySchedule = array();
$mySchedule[] = $_POST["myArray"];  // get the json array

就是这样。非常感谢您的帮助和建议。我希望这个例子对其他人有帮助。