Javascript 如何将数据发送到另一个页面而不将其附加到url中?

Javascript 如何将数据发送到另一个页面而不将其附加到url中?,javascript,javascript-events,Javascript,Javascript Events,我有一个场景,当用户点击一个链接时,他被引导到一个页面,我想在其中添加一个代码来获取一个变量并重定向到另一个页面 .即。用户单击 在sample.tpl上,我想写一段代码将他重定向到另一个页面 <script> window.location="http://mydomain.com/?page_id=10" window.location=”http://mydomain.com/?page_id=10" 但出于安全原因,我也希望在这个新链接上发送一个变量,而不将其附加到u

我有一个场景,当用户点击一个链接时,他被引导到一个页面,我想在其中添加一个代码来获取一个变量并重定向到另一个页面

.即。用户单击

在sample.tpl上,我想写一段代码将他重定向到另一个页面

<script>
window.location="http://mydomain.com/?page_id=10"

window.location=”http://mydomain.com/?page_id=10"

但出于安全原因,我也希望在这个新链接上发送一个变量,而不将其附加到url上

我怎样才能用一些安全的程序来做呢


如果不清楚,请向我提问。

您可以使用
method=“post”
创建一个表单,使用您希望传递的值创建一个
隐藏的
输入,以及一个样式为常规链接的
submit
按钮(如果您还想手动发送表单)

然后只需通过
submit()
方法手动或以编程方式提交表单即可


示例(页面加载3秒后自动重定向)

Html


作为一个旁注,你可以考虑在<代码> <代码>标签中插入<代码>提交<代码>按钮,这样即使在用户设备上没有JS,重定向也是可能的。因此,该页面仍然可以访问。

法布里齐奥的回答更进一步,有人编写了一个javascript函数,允许您构建表单,并在运行时通过
POST
发送表单

POST
类似于
GET
(变量被附加到url中),只是变量是通过标题发送的。仍然可以伪造
POST
请求,因此必须对数据执行某种验证

function post_to_url(path, params, method) {
    method = method || "post"; // Set method to post by default, if not specified.

    // The rest of this code assumes you are not using a library.
    // It can be made less wordy if you use one.
    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", path);

    for(var key in params) {
        if(params.hasOwnProperty(key)) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", params[key]);

            form.appendChild(hiddenField);
         }
    }

    document.body.appendChild(form);
    form.submit();
}
这样使用:

post_to_url("http://mydomain.com/", {'page_id':'10'}, "post");

来源:

您是否尝试将其保存在cookie中,然后在其他页面中访问它?目标页面是否属于您?您所说的安全原因是什么?是的,目标页面是我的,对于Cookie,如果Cookie被禁用,该怎么办?如果您确切地解释您试图做什么以及为什么要这样做,可能会有一个更好的完整解决方案。在webworld中没有多少是真正安全的,除非您使用的是SSL上的表单。实际上,我只希望注册用户看到该页面,但用户身份验证来自另一个数据库。因此,我不希望它被附加到url,因为任何人都会来访问该页面。好主意,让我试试,然后会回来评论它或将其标记为答案,同时,如果你能给我提供一个例子,将不胜感激
function post_to_url(path, params, method) {
    method = method || "post"; // Set method to post by default, if not specified.

    // The rest of this code assumes you are not using a library.
    // It can be made less wordy if you use one.
    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", path);

    for(var key in params) {
        if(params.hasOwnProperty(key)) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", params[key]);

            form.appendChild(hiddenField);
         }
    }

    document.body.appendChild(form);
    form.submit();
}
post_to_url("http://mydomain.com/", {'page_id':'10'}, "post");