在重定向之前发布变量?

时间:2015-10-15 13:16:16

标签: php jquery redirect

我目前正在使用CMS。我想将页面ID或网站ID发送到重定向的下一页。我尝试使用jQuery POST函数:

    $(document).ready(function(){
    $('.sender').on('click','a',function(){
                    var url = $(this).attr('href');
                    var n = url.indexOf('#')+1;
                    var siteid = url.substr(n,url.length);

                    $.ajax({
                        url: 'pages.php',
                        type: 'POST',
                        data: { siteid:siteid },
                        success: function(response){
                                console.log('check'); 
                        },
                        error: function(){
                                console.log('error');
                        }
                    });
                });
});

但是因为请求是在重定向的同时发送的,所以它似乎不起作用。

因为我使用apache rewrite_engine来重定向东西,所以我不能使用GET。

除了session_variables,我的选择是什么? 我想保证它的安全,所以我不希望有太多信息可见/可用!

2 个答案:

答案 0 :(得分:0)

要实现此目的,您需要等待AJAX​​请求在重定向页面之前完成。试试这个:

$(document).ready(function(){
    $('.sender').on('click', 'a', function(e){
        e.preventDefault(); // stop the default redirect
        var url = $(this).attr('href');
        var n = url.indexOf('#') + 1;
        var siteid = url.substr(n, url.length);

        $.ajax({
            url: 'pages.php',
            type: 'POST',
            data: { 
                siteid: siteid 
            },
            success: function(response){
                console.log('check'); 
                window.location.assign(url); // redirect once the AJAX has successfully completed
            },
            error: function(){
                console.log('error');
            }
        });
    });
});

答案 1 :(得分:0)

我不清楚你明白为什么需要,但我认为这可以解决你的问题。

如果您需要使用真实的POST方法传输信息,只需使用method="POST"创建一个隐藏的表单并在点击事件中填充它。

<script type="text/javascript">
$(document).ready(function(){
    $('.sender').on('click','a',function(event){
        event.preventDefault();

        var url = $(this).attr('href');
        var n = url.indexOf('#')+1;
        var siteid = url.substr(n,url.length);

        $('input[name="siteid"]').val(siteid);
        $('#redirectForm').submit();
    });
});
</script>

<form id="redirectForm" action="pages.php" method="POST">
    <input type="hidden" name="siteid" value=""/>
</form>