在PHP上打开一个新选项卡

时间:2012-11-17 05:20:22

标签: php javascript forms redirect tabs

我有一个简单的表格:

<form id="frm" action="process.php" method="post">
    <input type="text" id="shortcut" name="shortcut" />
</form>

process.php

$gomenu = $_POST['shortcut'];
if(strpos($gomenu, "/") === 0) {
    //if $gomenu contains `/`, then it should open in new tab
    header('Location: newTab.php'); //--> How to open this into a new tab?
} else {
    header('Location: somePage.php'); //--> Redirect to somePage.php on the same tab
}

shortcut包含/的值时,它应该重定向到新标签,否则是相同的标签。怎么做?我知道使用header();无法做到这一点,但我不知道该怎么做。有任何想法吗?感谢。

PS:表单旨在通过菜单代码填充,然后必须根据shortcut上填写的菜单代码重定向页面(如在SAP中)。但如果它包含特定的前缀,则应实现不同的方式。


更新

在表单上方,我添加了这个脚本:

<script>
    $("#frm").ajaxForm({
        url: 'process.php', type: 'post'
    });
</script>

process.php上:

$gomenu = $_POST['shortcut'];
if(strpos($gomenu, "/") === 0) {
    print   "<script>
                 window.open('newTab.php', '_newtab');
             </script>";
} else {
    header('Location: somePage.php');
}

然后它在一个新的弹出窗口中打开。如何在newtab上打开它?


ANSWER (@ fedmich的回答)

        $(document).ready(function () {
            $('frm#frm').submit(function(){
                var open_new_tab = false;
                var v = $('#shortcut').val();
                if(v.match('/') ){
                    open_new_tab = true;
                }

                if ( open_new_tab ) {
                    $('frm#frm').attr('target', '_blank');
                } else {
                    $('frm#frm').attr('target', '_self');
                }
            });
        });

3 个答案:

答案 0 :(得分:3)

通过AJAX提交表单,在PHP的响应中发送新的URL,并使用JavaScript打开新窗口,如果您的PHP脚本指定它应该。

答案 1 :(得分:3)

我认为您可以这样做,默认情况下将目标设为空白

<form id="frm" action="process.php" method="post" target="_blank">

</form>

然后在表单上提交submit()并修改&amp;如果需要,请离开。 您可以在提交前使用javascript,更改操作或目标属性

http://jsfiddle.net/fedmich/9kpMU

$('form#frm').submit(function(){
    var open_new_tab = false;
    var v = $('#shortcut').val();
    if(v.match('/') ){
        open_new_tab = true;
    }

    if ( open_new_tab ) {
        alert('opening to new tab');
        $('form#frm').attr('target', '_blank');
        $('form#frm').attr('action', 'http://www.youtube.com');
    }
    else{
        alert('opening to self_page');
        $('form#frm').attr('target', '_self');
        $('form#frm').attr('action', 'http://www.yahoo.com');
    }
});

答案 2 :(得分:0)

<?php

$gomenu = $_POST['shortcut'];

if(strpos($gomenu, "/") === 0) 
{
    echo "<script type='text/javascript'>window.open('newTab.php', '_blank')</script>";
} 
else 
{
    echo "<script type='text/javascript'>window.open('newTab.php', '_parent')</script>";
}

?>