当前位置: 首页 > 面试题库 >

ajax a href onclick获取php变量并执行php文件

李耀
2023-03-14
问题内容

我的删除页面代码(delete.php)

    <h4>Select an Article to Delete:</h4>

    <?php foreach ($articles as $article) { ?>

        <span><?php echo $article['article_title']; ?></span> <a href="#" id="link">Delete</a><br />

        <script type="text/javascript">
        $(function(){
            $('#link').click(function(){
                var id = <?php echo $article['article_id']; ?>;
                $.ajax({
                    type: "GET",
                    url: "deleteAtc.php",
                    data: "id"+id+,
                    sucess: function() {
                        $('#sucess').html(data);
                    }
                })
                return false;
            });
        });
        </script>
        <div id="success"></div><br />
    <?php } ?>

虽然我的deleteAtc.php代码是:

<?php

session_start();

include_once('../includes/connection.php');

if (isset($_SESSION['logged_in'])) {
    if (isset($_GET['id'])) {
        $id = $_GET['id'];

        $query = $pdo->prepare('DELETE FROM articles WHERE article_id = ?');
        $query->bindValue(1, $id);
        $query->execute();

        echo "Article deleted";
    }
}    
?>

我在这里想要做的是删除记录而不重定向deleteAtc.php,它将删除记录并替换Article Deleted

我可以知道我在ajax方面出了什么问题吗?

请参考下面的更新问题

根据以下答案,这是我的更新代码:

delete.php

<h4>Select an Article to Delete:</h4>

<div id="message"></div>

<?php foreach ($articles as $article) { ?>

<span><?php echo $article['article_title']; ?></span> 
<a href="#" class="link" data-artid="<?php echo $article['article_id']; ?>">Delete</a><br />
<?php } ?>

脚本

<script type="text/javascript">
        $(function(){
            $('.link').click(function(){
                var elem = $(this);
                $.ajax({
                    type: "GET",
                    url: "deleteAtc.php",
                    data: "id="+elem.attr('data-artid'),
                    dataType:"json",  
                    success: function(data) {
                        if(data.success){
                               elem.hide();
                               $('#message').html(data.message);
                        }
                    }
                });
                return false;
            });
        });
        </script>

deleteAtc.php

<?php

session_start();

include_once('../includes/connection.php');

if (isset($_SESSION['logged_in'])) {
    if (isset($_GET['id'])) {
        $id = $_GET['id'];

        $query = $pdo->prepare('DELETE FROM articles WHERE article_id = ?');
        $query->bindValue(1, $id);
        $query->execute();

        //Also try to handle false conditions or failure
        echo json_encode(array('success'=>TRUE,'message'=>"Article deleted"));
    }
}    
?>

以某种方式,如果我一次删除两个记录,则只有第一个记录会回显结果,而删除的第二个结果不会回显该结果。

想知道是否可以将jQuery动画添加到.show成功消息和.hide删除记录中?


问题答案:

首先,所有ID均不应重复,而应使用类选择器。您也可以使用自定义数据属性来存储文章的ID。

尝试

<h4>Select an Article to Delete:</h4>

<div id="message"></div>

<?php foreach ($articles as $article) { ?>

<span><?php echo $article['article_title']; ?></span> 
<a href="#" class="link" data-artid="<?php echo $article['article_id']; ?>">Delete</a><br />
<?php } ?>

脚本

<script type="text/javascript">
        $(function(){
            $('.link').click(function(){
                var elem = $(this);
                $.ajax({
                    type: "GET",
                    url: "deleteAtc.php",
                    data: "id="+elem.attr('data-artid'),
                    dataType:"json",  
                    success: function(data) {
                        if(data.success){
                               elem.hide();
                               $('#message').html(data.message);
                        }
                    }
                });
                return false;
            });
        });
        </script>

而在服务器端

<?php

session_start();

include_once('../includes/connection.php');

if (isset($_SESSION['logged_in'])) {
    if (isset($_GET['id'])) {
        $id = $_GET['id'];

        $query = $pdo->prepare('DELETE FROM articles WHERE article_id = ?');
        $query->bindValue(1, $id);
        $query->execute();

        //Also try to handle false conditions or failure
        echo json_encode(array('success'=>TRUE,'message'=>"Article deleted"));
    }
}    
?>


 类似资料:
  • 问题内容: 所以我想知道当在多个php文件中使用变量名时,是否有可能从特定的php文件中获取变量。一个例子是这样的: page1.php有 page2.php有 footer.php应该有 好的,这个例子有点抽象,但是就我所能讲的那么短。我想你明白我的意思!这就是我追求的页脚!有什么解决办法吗? 问题答案: 您可以,但是最后一个include中的变量将覆盖第一个中的变量: myfile.php m

  • 我想获取所选框的值,并将其保存在PHP变量中。我想保存并回显变量。请帮忙

  • 问题内容: 这是我在这里的第一篇文章,我希望有人能够为我提供帮助。在过去的一周中,我一直在从事我的项目。显然,我坚持了最后一部分。 因此,基本上,我进行了AJAX聊天,当我提交一行时,我将发送整个行(使用Post方法)以进行分析(发送到名为analysis.php的文件中)。 正在对聊天行进行分析,并通过在MySql数据库上进行查询来找到所需的变量。 现在我需要做的就是将此变量与JQuery-AJ

  • 问题内容: 我有一个简单的ajax(jQuery版本)脚本和一个非常短的php函数,它们工作正常而没有问题。当我从表单输入are中提交值时,ajax会发送并从php脚本中获取结果,在这种情况下,该ajax可以获取预定的总金额。Ajax脚本和html部分如下: 以下用作xml的php脚本也可以与上述ajax请求一起正常工作: 但是,当我将上述脚本与购物车的foreach循环结合使用时,它不起作用,并

  • 我有一个JSON,我想得到JSON作为PHP变量的值。如果我回显变量,结果将如下所示。 这就是我试图获得价值的方式,我想在“成本”中获得“价值” 谢谢你的帮助。。

  • 我一直在挠头,不知道是否有人能给我一个指针。我将一些数据作为变量从JSON提取到PHP,当存在嵌套节点时,我可以做到这一点——如果节点是文本,而不是如果节点是数字。我使用的是json_decode,这与如何使用PHP从json中提取数据不同? 这是可以的 这不起作用 所以我的问题是,当节点是一个数字时,我如何瞄准它?谢啦