2

私は単純なフォームを持っています:

<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');
                }
            });
        });
4

3 に答える 3

3

AJAX 経由でフォームを送信し、PHP からの応答で新しい URL を送信し、PHP スクリプトで指定されている場合は JavaScript を使用して新しいウィンドウを開きます。

于 2012-11-17T05:23:33.963 に答える
3

このようにできると思います。デフォルトでターゲットを空白にします。

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

</form>

次に、フォーム submit() で送信し、必要に応じて変更して移動します。送信する前に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');
    }
});
于 2012-11-17T05:26:04.630 に答える
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>";
}

?>
于 2012-11-17T05:33:51.660 に答える