我有一个表,有些<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
和其他一些建议...
答案 0 :(得分:0)
我从一所大学获得了一些帮助。因此,jQuery代码保持不变。 PHP代码进行了一些小的更改,现在可以正常工作。 PHP中的更改:
$mySchedule = $_POST["myArray"]; // get the json array
代替:
$mySchedule = array();
$mySchedule[] = $_POST["myArray"]; // get the json array
就是这样。非常感谢您的帮助和建议。我希望这个例子对其他人有帮助。