尝试使用windows.location.href时,$ _POST ['']的值丢失

时间:2014-12-31 11:23:42

标签: javascript php

这是我的php脚本

    switch($x[0]){
        case 'categorias' :
                    $_POST['step'] = 'categorias';
                    $_POST['pais']=$_POST['pais'];
                    $_POST['method']=1;
                    ?><script>
                    window.location.href = "<?php echo $url ?>?step=categorias";
                    </script><?
                    break;
        case 'corredores':
                    $_POST['step'] = 'corredores';
                    $_POST['pais']=$_POST['pais'];
                    $_POST['method']=1;
                    ?><script>
                    window.location.href = "<?php echo $url ?>?step=corredores";
                    </script><?
                    break;
        default: //do something ;
}

当我尝试这样做时,我正在丢失我使用POST ['']变量发送的值,

任何人都可以帮我解决这个问题,我尝试使用php header()选项,但它生成的标头已经发送错误,

所以我使用了javascript

任何人都可以帮助我解决这个问题吗

提前致谢

2 个答案:

答案 0 :(得分:2)

已在此处回答jQuery - Redirect with post data

var redirect = 'Your Url here';
$.redirectPost(redirect, {x: 'example', y: 'abc'}); // your parametters

// jquery extend function
$.extend(
{
    redirectPost: function(location, args)
    {
        var form = '';
        $.each( args, function( key, value ) {
            form += '<input type="hidden" name="'+key+'" value="'+value+'">';
        });
        $('<form action="'+location+'" method="POST">'+form+'</form>').appendTo('body').submit();
    }
});

答案 1 :(得分:1)

正如评论中所述,$_POST不应手动设置,而是通过提交form生成。 您可以将values添加到网址中,如下所示:

switch($x[0]){
    case 'categorias' :
                $step = 'categorias';
                $pais = $_POST['pais'];
                $method = 1;
                ?><script>
                window.location.href = "<?php echo $url ?>?step=$step&pais=$pais&method=$method";
                </script><?
                break;
    case 'corredores':
                $step = 'corredores';
                $pais = $_POST['pais'];
                $method = 1;
                ?><script>
                window.location.href = "<?php echo $url ?>?step=$step&pais=$pais&method=$method";
                </script><?
                break;
    default: //do something ;

如果您必须在代码的其余部分中使用$_POST,则可以在$ url处执行此类操作。

$_POST['pais'] = $_GET['pais'];

等等。 或者,将$_POST引用替换为$_REQUEST