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



相关:

使用POST而不是GET 创建链接

是否使href(锚标记)请求POST而不是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()
}
}

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

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

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

只需在goToOtherPage回调中保存任何数据即可:

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

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

sessionStorage.getItem('formData');

最新更新