11
<html>
<head>
<script>
function open_win()
{
    window.open("http://localhost:8080/login","mywindow")
}
</script>
</head>
<body>

<input type="button" value="Open Window" onclick="open_win()">

</body>
</html>

你好 ,

单击一个按钮,我打开一个new website(我的网站)我有两个text fields(一个文本字段和另一个密码字段),我正在尝试将此值发送到另一个打开的窗口。

但它没有按我的意愿工作。

我尝试了以下方法

1.  window.open("http://localhost:8080/login?cid='username'&pwd='password'","mywindow")

2.  window.open("http://localhost:8080/login","mywindow")
    mywindow.getElementById('cid').value='MyUsername'
    mywindow.getElementById('pwd').value='mypassword'

如果这可能与否,有人可以帮助我吗?

抱歉,细节不完整,它是一个 Post 请求。

4

6 回答 6

13

如果要传递 POST 变量,则必须使用 HTML 表单:

<form action="http://localhost:8080/login" method="POST" target="_blank">
    <input type="text" name="cid" />
    <input type="password" name="pwd" />
    <input type="submit" value="open" />
</form>

或者:

如果要在 URL 中传递 GET 变量,请在不带单引号的情况下编写它们:

http://yourdomain.com/login?cid=username&pwd=password

以下是如何使用 javascrpt 变量创建上面的字符串:

myu = document.getElementById('cid').value;
myp = document.getElementById('pwd').value;
window.open("http://localhost:8080/login?cid="+ myu +"&pwd="+ myp ,"MyTargetWindowName");

在具有该 url 的文档中,您必须阅读 GET 参数。如果它在 php 中,请使用:

$_GET['username']

请注意:以这种方式传输密码是一个很大的安全漏洞!

于 2012-11-06T12:18:25.363 回答
3

请找到此示例代码,您可以使用带有 POST 的隐藏表单将数据发送到您的 URL,如下所示:

function open_win()
{
    var ChatWindow_Height = 650;
    var ChatWindow_Width = 570;

    window.open("Live Chat", "chat", "height=" + ChatWindow_Height + ", width = " + ChatWindow_Width);

    //Hidden Form
    var form = document.createElement("form");
    form.setAttribute("method", "post");
    form.setAttribute("action", "http://localhost:8080/login");
    form.setAttribute("target", "chat");

    //Hidden Field
    var hiddenField1 = document.createElement("input");
    var hiddenField2 = document.createElement("input");

    //Login ID
    hiddenField1.setAttribute("type", "hidden");
    hiddenField1.setAttribute("id", "login");
    hiddenField1.setAttribute("name", "login");
    hiddenField1.setAttribute("value", "PreethiJain005");

    //Password
    hiddenField2.setAttribute("type", "hidden");
    hiddenField2.setAttribute("id", "pass");
    hiddenField2.setAttribute("name", "pass");
    hiddenField2.setAttribute("value", "Pass@word$");

    form.appendChild(hiddenField1);
    form.appendChild(hiddenField2);

    document.body.appendChild(form);
    form.submit();

}
于 2014-06-03T10:32:57.303 回答
2

您可以使用它,但仍然存在安全问题

<script type="text/javascript">
function fnc1()
{
    var a=window.location.href;

    username="p";
    password=1234;
    window.open(a+'?username='+username+'&password='+password,"");

}   
</script>
<input type="button" onclick="fnc1()" />
<input type="text" id="atext"  />
于 2012-11-06T12:22:42.287 回答
1
You can try this instead


var myu = document.getElementById('myu').value;
var myp = document.getElementById('myp').value;
window.opener.location.href='myurl.php?myu='+ myu +'&myp='+ myp;

注意:请勿使用此方法传递用户名、密码等敏感信息。

于 2013-03-19T04:48:47.280 回答
1

要连接字符串,请使用+运算符。

要将数据插入 URI,请将其编码为 URI。

坏的:

var url = "http://localhost:8080/login?cid='username'&pwd='password'"

好的:

var url_safe_username = encodeURIComponent(username);
var url_safe_password = encodeURIComponent(password);
var url = "http://localhost:8080/login?cid=" + url_safe_username + "&pwd=" + url_safe_password;

服务器必须处理查询字符串才能使用数据。您不能分配给任意表单字段。

…但不要触发新窗口或在 URI 中传递凭据(它们会暴露在肩上攻击并可能被记录)。

于 2012-11-06T12:21:41.940 回答
1

我发现这种方法非常有用,我希望这对许多用户也有帮助。

// --> 屏幕 1:

var url = 'screen_2_url';
var id = 'some_ID';


window.open(url + '?id=' + id);

这将打开Screen 2选项卡。在那里您可以像这样获取传递的值:

// --> 屏幕 2:

const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const id = urlParams.get('id');
于 2021-05-20T08:29:56.903 回答