锚标记 - 在同一窗口/选项卡中打开新位置,并使用POST传递值

时间:2017-01-25 09:52:43

标签: javascript php jquery html

相关:

this question

Make a link use POST instead of GET

如何制作它,以便当用户点击链接时,他被重定向到新页面,以及上一页上的输入?我必须使用POST请求,并且我不想使用任何隐藏的表单(或任何其他形式),如链接(以及许多其他SO)答案中所建议的那样。这甚至可行吗?

我目前的设置(我不允许改变很多)如下:

<form role="form" id="myForm" method="post" action="stuff.php">
    <div class="form-body form-body-dark">
        <div class="form-actions">

            <div class="row">
                <!-- various inputs go here -->
            <input type="text" name="userID">
            </div>

            <div class="row">
                <div class="col-md-6 col-xs-6">
                    <button type="submit" id="doStuff" class="btn btn-primary btn-lg btn-block"><i class="fa fa-check"></i> Submit</button>
                </div>                                      
                <div class="col-md-6 col-xs-6">
                    <a href="index.php" id="cancel" class="btn btn-danger btn-lg btn-block"><i class="fa fa-refresh"></i> Cancel
                    </a>
                </div>                                      
            </div>

        </div>  
    </div>
</form>

现在,我需要添加另一种方式来提交相同输入的一部分,但是需要另一种方式来提交另一个php页面。我想用锚标签和POST请求来做这件事。应该在第一个按钮(提交)之前插入的代码块,但形式相同:

HTML

<div class="col-md-4 col-xs-4">
    <a onclick="goToOtherPage()" id="details" class="btn btn-success btn-lg btn-block">
        <i class="fa fa-table"></i> Details
    </a>                                 
</div>

的jQuery

function goToOtherPage() {
   var otherPage = "details.php";
   $.post(otherPage, { 
       'userID': $('#userID').val()
   }
}

在传递userID之后,在函数内添加window.location.href = 'details.php',打开新页面,但没有我要传递的参数。

我考虑过设置和取消设置Cookie,并绕过整个POST / GET问题,但这不是一个可行的选择。

1 个答案:

答案 0 :(得分:1)

您可以使用SessionStorage API在一个页面上保存一些数据,而在另一个页面上访问该数据,而不是使用Cookie。看看sessionStorage MDN

只需在Observable.zip( source1, source2, optionalSource3.onErrorReturnItem(stub) ) ... 回调中保存所有数据:

goToOtherPage

稍后,在下一页上,您可以通过以下方式访问上一页保存的数据:

sessionStorage.setItem('formData', {});