【问题标题】:Can not pass variable by ajax to other php file无法通过ajax将变量传递给其他php文件
【发布时间】:2020-10-13 16:54:31
【问题描述】:

我想将一个变量从一个 PHP 文件传递​​到另一个,为此,我正在尝试使用 ajax。现在,在我的“index.php”文件中,我有一个按钮。单击该按钮时,我想将该按钮的 id 传递给另一个 PHP 文件,即“show_schedule.php”。 这是我的 index.php 文件的 ajax 代码:

$(document).on('click', '.show', function(){
        var schedule_id = $(this).attr("id");
        $.ajax({
            url:"show_schedule.php",
            method:"POST", 
            data:{schedule_id:schedule_id},
            dataType:"json",
            success:function(data)
            {
                window.location.href = 'show_schedule.php';
            }
        });
    });

这是我的“show_schedule.php”文件:

<?php 
    session_start();

    if(isset($_POST["schedule_id"])){
        $s_id = $_POST['schedule_id'];
        echo $s_id;
    }
?>

data is index.php 由 'fetch.php' 获取并显示,其中,该按钮设置如下:

'<button type="button" name="show" id="'.$row["s_id"].'" class="btn btn-primary btn-sm show">Show</button>';

当我点击这个按钮时,我被重定向到“show_schedule.php”,但变量值没有被传递,即该页面上没有打印任何内容。谁能告诉我我在哪里犯错?任何帮助都会得到帮助。

【问题讨论】:

  • 您可以只使用this.id 而不是使用 attr 方法。您是否检查了浏览器网络选项卡中的调用以确保该值正在传递?您还可以使用 var_dump 查看 PHP 端的变量(只需输出到 isset 外部的屏幕或日志/文件。
  • 尝试在var schedule_id = $(this).attr("id"); 这一行之后使用console.log(schedule_id)。查看id 是否显示在控制台上。
  • 使用 DevTools 中的 Elements 面板查看&lt;button&gt;中的id是否填写正确。
  • 您的代码完全按照您编写的方式执行。在此行中看到window.location.href = 'show_schedule.php'; 您正在重定向到show_schedule.php 文件,因此在此之前没有必要进行ajax 调用,并且您传递的ID 将在show_schedule.php 上收到,但在success: (data)(...} 之后您正在重定向进入show_schedule.php,没有任何id。
  • 我建议如果id 不敏感,然后在url 中传递它并使用GET 方法接收。

标签: javascript php jquery mysql ajax


【解决方案1】:

您可以执行以下操作并更改 php 以获取 GET 参数,即

$(document).on('click', '.show', function(){
        var schedule_id = $(this).attr("id");
        window.location.href = 'show_schedule.php?schedule_id='+schedule_id;
        });
 });

如果它必须是一个帖子,那么可以找到一些解决方案@pass post data with window.location.href

【讨论】:

  • window.location.href = 'show_schedule.php?schedule_id='+schedule_id;
  • 必须在 url 中的 schedule_id 之后包含 '=',如果编辑少于 6 个字符,他们不会让我编辑您的答案,所以请在此处发表评论。
【解决方案2】:

我已经使用jQuery ajax post 请求向getval.php 文件发送数据,数据将成功发送。

ajax.php

!DOCTYPE html>
<html>
<head>
    <title>ajax request</title>
    <!-- jQuery cdn -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <button id="send-data">send data</button>
    <div class="data"></div>
</body>
</html>
<script type="text/javascript"> 
    
    $(document).ready(function () {
        
        $('#send-data').click(function () {
            let val = "test";  // send val variable data
            $.post("getval.php", { value: val }, function (data, status) {  //send data using post request
                if (status == "success") {
                    $('#send-data').remove();
                    $('.data').append(data);
                }
            });
        });     
    });

</script>

getval.php

<?php

if (isset($_POST['value'])) {
    $data = $_POST['value'];
    echo "<br>The data is : ".$data;    
}

?>

输出:-

数据是:测试

【讨论】:

    猜你喜欢
    • 2013-03-05
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多