当前位置: 首页 > 面试题库 >

Window.open和通过post方法传递参数

翟奕
2023-03-14
问题内容

我使用window.open方法打开了带有参数的新站点,我必须通过post方法来传递它。我找到了解决方案,但不幸的是它不起作用。这是我的代码:

<script  type="text/javascript">    
function openWindowWithPost(url,name,keys,values)
{
    var newWindow = window.open(url, name);

    if (!newWindow) return false;

    var html = "";
    html += "<html><head></head><body><form id='formid' method='post' action='" + url +"'>";

    if (keys && values && (keys.length == values.length))
        for (var i=0; i < keys.length; i++)
            html += "<input type='hidden' name='" + keys[i] + "' value='" + values[i] + "'/>";

    html += "</form><script type='text/javascript'>document.getElementById(\"formid\").submit()</sc"+"ript></body></html>";

    newWindow.document.write(html);
    return newWindow;
}
</script>

接下来,我创建数组:

<script type="text/javascript">    
var values= new Array("value1", "value2", "value3") 
var keys= new Array("a","b","c") 
</script>

并通过以下方式调用函数:

<input id="Button1" type="button" value="Pass values" onclick="openWindowWithPost('test.asp','',keys,values)" />

但是,当我单击此按钮时,站点test.asp为空(当然,我尝试获取传递值- Request.Form("b"))。

我怎么解决这个问题,为什么我不能获得通过值?


问题答案:

无需将表单写入新窗口(要用HTML代码中的值进行编码就很难正确地进行表单),只需打开一个空窗口并将表单发布到该窗口即可。

例:

<form id="TheForm" method="post" action="test.asp" target="TheWindow">
<input type="hidden" name="something" value="something" />
<input type="hidden" name="more" value="something" />
<input type="hidden" name="other" value="something" />
</form>

<script type="text/javascript">
window.open('', 'TheWindow');
document.getElementById('TheForm').submit();
</script>

编辑:

要动态设置表单中的值,可以执行以下操作:

function openWindowWithPost(something, additional, misc) {
  var f = document.getElementById('TheForm');
  f.something.value = something;
  f.more.value = additional;
  f.other.value = misc;
  window.open('', 'TheWindow');
  f.submit();
}

要发布表单,您可以使用值调用函数openWindowWithPost('a','b','c');

注意:我改变了与表单名称相关的参数名称,以表明它们不必相同。通常,您将使它们彼此相似,以使其更易于跟踪值。



 类似资料:
  • 问题内容: 这是我的Java代码: 我这样称呼它: 问题是呼叫保持发布零零零,似乎我没有正确传递x和y。 更新资料 回答之后,我将请求更改为: 服务是: 但我仍然有同样的问题。这是服务器的响应: 您可以在末尾看到零:( 问题答案: (请注意,不是)是表单数据()向其发送了请求的正文,其中您的资源方法应更像 并且以下请求将起作用 注意: 在Windows中,必须使用双引号() 您甚至可以分离键值对

  • 问题内容: 我正在使用Html5服务器发送事件。服务器端是Java Servlet。我有一个要传递给服务器的json数组数据。 如果数组大小较小,则服务器端可以获取查询字符串。但是,如果数组大小很大。(可能超过数千个字符),服务器无法获取查询字符串。是否可以使用POST方法将json数组传递到服务器,从而避免了查询字符串长度的限制? 问题答案: 不可以,SSE标准不允许POST。 (出于技术原因,

  • 问题内容: 我正在使用PhantomJS page.evaluate()进行抓取。我的问题是我传递到Webkit页面的代码是沙盒化的,因此无法访问我的主要幻象脚本的变量。这使得很难使抓取代码通用。 如何将参数推入页面? 问题答案: 我遇到了确切的问题。可以使用一些技巧,因为它也可以接受字符串。 有几种方法可以执行此操作,但是我使用了一个称为的包装器,该包装器接受其他参数以传递给必须在Webkit端

  • 我正在为webste构建一个功能,用户可以在其中重置密码。他收到一封电子邮件,其中包含URL中生成的令牌。单击此链接时,用户将被发送到/Reset页面。该页的Get方法如下:

  • 问题内容: 我有一个链接: 触发ajax调用 但是在控制台中,我看到以下内容: 处理了ajax文件,但是POST数据为空,并且没有执行成功操作,因此将其用零发布,并且类未更改 我凝视着……有什么明显的东西吗? 问题答案: 不会自动传递给AJAX回调函数。您可以使用参数告诉jQuery通过它:

  • 本文向大家介绍Angularjs中$http以post请求通过消息体传递参数的实现方法,包括了Angularjs中$http以post请求通过消息体传递参数的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Angularjs中$http以post请求通过消息体传递参数的方法。分享给大家供大家参考,具体如下: Angularjs中,$http以post在消息体中传递参数,需要做以下修