layui table中获取行的部分数据并ajax post传递给php后台

layui table中获取行的部分数据并ajax post传递给php后台查询,目前下述传递参数失败:


        //监听行工具事件 ,删除一行,修改数据 
      table.on('tool(test1)', function (obj) {
        var data = obj.data;
        if (obj.event === 'edit') {
          openedit(data);
        } else if(obj.event === "detail") {
                // 详情
                let name= data["name"]; //获取行中的姓名
                let timestamp = data["timestamp"]; //获取行中的时间
                $.ajax({
                    type: "post",
                    url: "./order_detail.php",//传值给php后台,失败
                    data: {"name": name,"timestamp": timestamp},  //传值给php后台,失败
          dataType:"json",
                    success: function (data) {
                        if (data) {
                            var data=data.data;
                            var layer = layui.layer;
                            layer.open({
                                type: 1,
                                content: $('#openProductBox'),
                                area: ['950px', '500px'], //宽高
                                success: function () {
                                    table.render({
                                        elem: '#openProductTable2'
                                        , height: 'FULL-1',
                                        url: "./order_detail.php",
                                        page: false //关闭分页
                                        ,  cols: [[ //表头
                                            {field: 'id',title: 'ID', sort: true}
                                            ,{field: 'name', title: '姓名'},
                                            ,{field: 'age', title: '年龄'},
                                            ,{field: 'address', title: '地址'},
                                        ]]
                                    });
                                    // layer.close(index)
                                }
                            }) 
                        } else {
                            alert("失败")
                        }
 
                    }
                }) 
            } 
      });

php后台


```php

//如果无返回空 

    $name= $_post['name'];
    $timestamp = $_post['timestamp'];
 
    
require './untils/pdo_connect_db.php';

$res = $pdo->query("SELECT * from table where name='$name' and addtime <='$timestamp' order by id desc limit 10")->fetchall(PDO::FETCH_ASSOC);
$num = count($pdo->query("SELECT * FROM table where name='$name' and addtime <='$timestamp' order by id desc limit 10")->fetchAll(PDO::FETCH_ASSOC));
  $json = json_encode(array(
    "code" => 0,
    "msg" => "",
    "count" =>  $num,
    "data" => $res
  ), JSON_UNESCAPED_UNICODE); //JSON_UNESCAPED_UNICODE注意不加会乱码
  echo $json; 

?>

```

以下内容部分参考ChatGPT模型:


问题可能出在ajax中传递的数据格式,应该使用JSON.stringify()将对象转换成JSON字符串再传递。修改代码如下:

$.ajax({
    type: "post",
    url: "./order_detail.php",
    data: JSON.stringify({"name": name,"timestamp": timestamp}),
    dataType: "json",
    success: function (data) {
        // 省略部分代码
    }
})

另外,在PHP中的$_POST变量名应该使用全大写。修改代码如下:

$name= $_POST['NAME'];
$timestamp = $_POST['TIMESTAMP'];

最后,注意SQL语句中的单引号和双引号的使用,应该使用一致的引号包裹字符串。修改代码如下:

$res = $pdo->query("SELECT * from table where name='$name' and addtime <= '$timestamp' order by id desc limit 10")->fetchall(PDO::FETCH_ASSOC);
$num = count($pdo->query("SELECT * FROM table where name='$name' and addtime <= '$timestamp' order by id desc limit 10")->fetchAll(PDO::FETCH_ASSOC));

以上是我作为PHP、Layui、Ajax技术领域的专家给出的解决思路,希望对您有帮助。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^