jquery:如何在新选项卡中打开一个 url,并将帖子数据传递给该 url

Posted

技术标签:

【中文标题】jquery:如何在新选项卡中打开一个 url,并将帖子数据传递给该 url【英文标题】:jquery: how to open an url in new tab with passing post data to that url 【发布时间】:2016-05-25 05:15:11 【问题描述】:

我有一个 php 文件 localhost/~user/sample.php 文件,它从 post 方法获取数据。

<?php
$you = $_POST["ids"];
$start= $_POST["start"];
echo $you."--".$start;

我想编写一个 jquery 代码,该代码将在我的 html 页面内单击按钮时在单独的窗口中打开 URL“localhost/~user/sample.php”,并传递它所需的参数。

我可以在php中使用get方法,但是变量个数比较多

【问题讨论】:

这听起来像是target="_blank"表单的任务 假设我有 20 个变量,例如 name1、name2 等如何传递它们 你愿意使用localstorage 吗? 【参考方案1】:

我可能会使用这样的表格:

<form action="sample.php" method="post" target="_blank">
  <input type="hidden" name="name1" />
  <input type="hidden" name="name2" />
  ...
  <input type="hidden" name="name20" />
  <input type="submit" value="Go to page">
</form>

这是我能想到的最跨浏览器的JS-failsafe基本html版本实现这个任务的方式……

如果你需要在表单中动态添加表单字段,相信你会发现这个问题:Jquery - Create hidden form element on the fly好用。复制修改后的答案:

$('<input type="hidden" name="myfieldname" value="myvalue">').appendTo('form');

【讨论】:

但我不想使用任何形式。我只是想收集一些数据并发送 你是什么意思?用户看不到表单。你只是用它来发送变量.. @SanthoshYedidi:她表单中的所有输入字段都隐藏 - 除了提交按钮(也可以使其不可见)。 好的。我必须发送的数据数量不断变化。还有如何将其附加到正文中。 数据是在客户端还是服务器端变化?【参考方案2】:

一种方法是动态创建一个隐藏表单,然后提交它,确保对输入进行编码

var params = [['someKey0', 'someValue0'], ['someKey1', 'someValue1'], ['someKey2', 'someValue2'], ['someKey3', 'someValue3']];

var inputs = $.map(params,function(e,i)
  return '<input type="hidden" name="'+e[0]+'" value="'+encodeURIComponent(e[1])+'"/>';
);
var form ='<form action="sample.php" id="hidden-form" method="post" target="_blank">'+inputs.join('')+'</form>';

$('#hidden-div').html(form);
$('#hidden-form').submit();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="hidden-div"></div>

【讨论】:

【参考方案3】:

试试这个……

<form id="myForm" action="sample.php" method="post">
<?php
     echo '<input type="hidden" name="'.htmlentities($you).'" value="'.htmlentities($start).'">';
?>
</form>
<script type="text/javascript">
    document.getElementById('myForm').submit();
</script>

【讨论】:

【参考方案4】:

如果您使用 javascript 向任何 php 页面发送请求;它发送一个请求并获得对已发送请求的页面的响应,然后您继续在第一页处理您的数据。因此,如果您想打开您的 sample.php 并在其中发送您的帖子数据;您必须使用 php 表单之类的方式发送数据。

提交表格:http://www.w3schools.com/php/php_forms.asp

如果你想使用 js post,你可以这样做:

teams.php:

data =  teams : ['Real Madrid','Barcelona','etc'];
var response = null;
$.ajax(
    url : 'mypostfile.php',
    type : 'POST',
    data : data
)
.done(function(resp) response = resp; //it returned from php echo  )
.fail(function()   console.log('fail'); //post process failed. );

mypostfile.php:

if(isset($_POST['teams']))
   $teams = $_POST['teams'];
   echo $teams[0]; //response : Real Madrid

希望对你有帮助。

【讨论】:

window.open 在哪里使用。 如果你想打开你的第二页,你应该提交php表单。 操作说明 我想编写一个 jquery 代码,它将在单独的窗口中打开 url "localhost/~user/sample.php"

以上是关于jquery:如何在新选项卡中打开一个 url,并将帖子数据传递给该 url的主要内容,如果未能解决你的问题,请参考以下文章

捕获“在新选项卡中打开链接”的事件点击 javascript 或 jquery - 隐藏 URL

Jquery自定义右键单击并在新选项卡中打开

链接在新选项卡中打开并关注上一个选项卡[重复]

jQuery:检测鼠标单击并在新选项卡中打开目标

如何使用 Ajax 成功在新选项卡中打开 URL?

Pyqt5右键单击并在新选项卡中打开