【问题标题】:PHP fetched result code in JavaScript is not workingJavaScript 中的 PHP 获取结果代码不起作用
【发布时间】:2021-05-20 14:12:00
【问题描述】:

我正在使用 SweetAlert2、PHP 和 JavaScript 制作一个简单的删除确认提示。我在这段代码中遇到了一个小问题:

<script>
        $(document).ready(function() {
            $('.delete').click(function() {
                Swal.fire({
                    title: 'Are you sure?',
                    text: "You won't be able to revert this!",
                    icon: 'warning',
                    showConfirmButton:true,
                    showCancelButton: true,
                    confirmButtonColor: '#49a12f',
                    cancelButtonColor: '#d33',
                    confirmButtonText: 'Yes'
                }).then((result) => {
                    if (result.isConfirmed) {
                        window.location.href = "deleteuser.php?userid=<?php echo $row["id"]; ?>";
                    }
                })
            })
        });
    </script>

使用此代码,当我单击按钮时,除了从代码中删除此部分的那一刻,它不会显示任何内容:

<?php echo $row["id"]; ?>

一切正常,并且它重定向但实际功能不起作用,它不会删除我想从数据库中删除的数据。我试图以某种方式将该 PHP 代码存储在一个变量中并以另一种方式使用它,但不好,我仍然无法进行更改。有什么方法可以将 PHP 代码放入 JavaScript 中,以便它可以按我想要的方式运行?提前致谢。

我要做的第一件事是从数据库中获取数据:

<?php

include_once 'connection.php';


$sql="SELECT * FROM admin";
$stmt = $conn->prepare($sql);
$stmt->execute();

if ($stmt->error){echo "something has gone wrong";}
$result=$stmt->get_result();
while($row = $result->fetch_assoc()) {

?>

然后是循环:

<tbody class="search">
    <tr>
        <td><?php echo $row["id"]; ?></td>
        <td>
            <div class="profile-img">
                <img class="img-fluid" src="userimg/<?php echo $row["img"]; ?>" alt="">
            </div>
        </td>
        <td><?php echo $row["firstname"]; ?></td>
        <td><?php echo $row["lastname"]; ?></td>
        <td><?php echo $row["email"]; ?></td>
        <td><?php echo $row["phone"]; ?></td>
        <td><?php echo $row["dept"]; ?></td>
        <td><?php echo $row["position"]; ?></td>
        <td><?php echo $row["location"]; ?></td>
        <td><?php echo $row["username"]; ?></td>
        <td>
            <a class="update" href="update-user.php?userid=<?php echo $row["id"]; ?>"><i class="fas fa-edit"></i></a>
            <div class="deletebut">
                <a class="delete"><i class="fas fa-trash"></i></a>
            </div>
        </td>
    </tr>
</tbody>

下我关闭循环:

<?php
}
 $conn->close();
?>

在代码的最后,我使用了这个 JavaScript:

    <script>
        $(document).ready(function() {
            $('.delete').click(function() {
                Swal.fire({
                    title: 'Are you sure?',
                    text: "You won't be able to revert this!",
                    icon: 'warning',
                    showConfirmButton:true,
                    showCancelButton: true,
                    confirmButtonColor: '#49a12f',
                    cancelButtonColor: '#d33',
                    confirmButtonText: 'Yes'
                }).then((result) => {
                    if (result.isConfirmed) {
                        window.location.href = "deleteuser.php?userid=<?php echo $row["id"]; ?>";
                    }
                })
            })
        });
    </script>

【问题讨论】:

  • 你检查过PHP代码的输出是什么,还是devtools控制台的错误?
  • Uncaught SyntaxError: Invalid or unexpected token
  • 这意味着 PHP 输出违反了 JS 语法,很可能是因为不匹配的撇号或引号。检查源输出以查看值是什么
  • window.location.href = "deleteuser.php?userid=
    它正在输出这个
  • 这就是你的问题 :) 你需要诊断为什么你在 URL 中看到了 &lt;br /&gt; 标记而不是 id 值。

标签: javascript php jquery sweetalert2


【解决方案1】:

我认为这就是你想要的吗?

例子

HTML:

<table>
<th>
  <td>column</td>
  <td>op</td>
</th>
<?php foreach($rows as $row) { ?>
<tr>
  <td><?php echo $row['name'] ?></td>
  <td><button class="delete" row_id="<?php echo $row['id'] ?>">del</button></td>
</tr>
<?php } ?>
</table>

Javascript:

$('.delete').click(function() {
  // your confirm dlg
  rowId = $(this).attr('row_id');
  location.href = `deleteuser.php?userid=${rowId}`;
}

【讨论】:

  • 请看一下我正在使用的完整代码
  • @EPICEXCHANGE 你说“在 我关闭循环”,为什么不?
  • 我试图在关闭循环之前添加脚本,但它给了我两个错误:未捕获的 ReferenceError: $ is not defined at users.php:128 Uncaught ReferenceError: $ is not defined at users.php:175当我点击这两行时,只有一个红色的 X 和空行..
  • @EPICEXCHANGE 你能导入 JQ $ 吗?
  • @EPICEXCHANGE 停止自动重定向 删除
【解决方案2】:

这可能是由于 PHP 警告。试试这个。

<script>
        $(document).ready(function() {
            $('.delete').click(function() {
                Swal.fire({
                    title: 'Are you sure?',
                    text: "You won't be able to revert this!",
                    icon: 'warning',
                    showConfirmButton:true,
                    showCancelButton: true,
                    confirmButtonColor: '#49a12f',
                    cancelButtonColor: '#d33',
                    confirmButtonText: 'Yes'
                }).then((result) => {
                    if (result.isConfirmed) {
                        window.location.href = "deleteuser.php?userid=<?php echo !empty($row['id'])?$row['id']:''; ?>";
                    }
                })
            })
        });
</script>

【讨论】:

  • 您好像忘记添加代码了。此外,问题更可能与 $row['id'] 的内容有关,而不是 PHP 语法本身
  • 好像是语法错误,PHP代码没有问题,行也不为空。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多