doujing8435 2014-11-10 00:38
浏览 62
已采纳

AJAX将数据发布到PHP文件并重定向到同一文件以回显发布数据

I have a php file with a bunch of <a></a> elements containing user names. Upon clicking one of these links, the link's data attributes are stored and posted to the second php file via AJAX. However, once I redirect to that file, the value I posted is not being displayed, instead I get the error: Undefined index userid.

Here's my code:

Index.php

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Post Test</title>
</head>
<body>

<a href="#" class="user-name" data-user-id="1" data-render-view="users.php">User 1</a>
<a href="#" class="user-name" data-user-id="2" data-render-view="users.php">User 2</a>
<a href="#" class="user-name" data-user-id="3" data-render-view="users.php">User 3</a>
<a href="#" class="user-name" data-user-id="4" data-render-view="users.php">User 4</a>
<a href="#" class="user-name" data-user-id="5" data-render-view="users.php">User 5</a>

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
$('.user-staff').on('click',function(){
  var userid = $(this).data('user-id');
  var renderView = $(this).data('render-view');

  $.ajax({
    url: "users.php",
    type: "POST",
    data: {userid:userid},
    success: function(data, textStatus, jqXHR){
      window.location = renderView;
    },
    error: function (jqXHR, textStatus, errorThrown){
      alert('Error!')
    }
  });
});

</script>
</body>
</html>

Users.php

<?php

$userIdExchanged = $_POST['userid'];

echo '<h1>user profile page</h1>';
echo $userIdExchanged; //Nothing is outputted here.

?>
  • 写回答

2条回答 默认 最新

  • doudun6928 2014-11-10 00:43
    关注

    Yes thats really what happened, basically, first step, you sent an ajax request, sending that value user-id.

    Then after that you redirect. This means that you have two separate requests.

    The first request was successful. After redirection (here comes the second) your values aren't there anymore since the data on the first request did not persist.

    I don't know why do you have to make an ajax request. Might as well submit the form normally.

    But if you really want to stay on this course, on the first request (the ajax request), you could save it in the session.

    So that value that you sent will be saved. Then after redirection, you still have it for access:

    <script type="text/javascript">
    // maybe you mean `.user-name` not `.user-staff`
    $('.user-name').on('click',function(){
    
        var userid = $(this).data('user-id');
        var renderView = $(this).data('render-view');
    
        $.ajax({
            url: "users.php",
            type: "POST",
            data: { userid: userid, setid: true }, // add a flag
            success: function(data, textStatus, jqXHR){
                window.location = renderView;
            },
            error: function (jqXHR, textStatus, errorThrown){
                alert('Error!')
            }
        });
    });
    </script>
    

    Then in PHP:

    <?php
    
    session_start();
    // if the set flag is used, set it
    if(isset($_POST['setid'])) {
        $_SESSION['userid'] = $_POST['userid'];
    }
    
    // if no flag is set, then this will just continue and echo the value currently set
    $userIdExchanged = $_SESSION['userid'];
    
    echo '<h1>user profile page</h1>';
    echo $userIdExchanged;
    
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题