javascript:使用window.open()发送自定义参数但不起作用

时间:2012-11-06 12:10:11

标签: javascript jquery

<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'

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

对于不完整的详细信息感到抱歉,这是一个帖子请求。

6 个答案:

答案 0 :(得分:10)

如果要传递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']

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

答案 1 :(得分:2)

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

要将数据插入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中的凭据(它们会在肩部受到攻击并且可能会被记录)。

答案 2 :(得分: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"  />

答案 3 :(得分: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;

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

答案 4 :(得分:1)

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

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();

}

答案 5 :(得分:0)

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

// --> 屏幕 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');