我知道这是一个常见的问题,但我找不到任何答案。 我有一个包含链接的PHP文件。单击该链接时,我想在新窗口中打开另一个页面,在这个新打开的页面上,我想获取在上一页上单击的链接的ID属性。
当前页面='patientreg.php'
在新窗口中打开的新页面='patient_history.php'
将数据从当前页面发布到新加载的页面。
当前页码:
HTML:
<a id="37" onclick="phistory(this.id);" href="#">View history</a>
JavaScript的:
function phistory(myVar) {
var myurl = '../main/patient_history.php';
$.post(myurl,{data:myVar},function(){});
window.open(myurl,'_blank');
}
新网页代码:
$phid = $_REQUEST["data"];
echo phid;
问题是它没有回显下一页的数据,但是我可以在当前页面的Firebug响应选项卡中看到echo的全新页面。
答案 0 :(得分:4)
试试这个,所以使用表单将数据发送到你的页面,你可以有更多详细的锚元素:
HTML:
<form id="myform" action="../main/patient_history.php" method="POST">
<input type="hidden" name="data" id="data" />
</form>
<a data-idref="37" class="see-history" href="#">View Histroy</a>
使用Javascript:
$(function() {
$('.see-history').bind('click', function(event) {
try {
window.open('about:blank', 'mynewwindow');
$('#myform').find('#data').val($(this).data('idref'));
$('#myform').attr('target', 'mynewwindow').submit();
} catch(e) {}
return false;
});
});
修改强>
如果您需要为每个故事打开一个新窗口,您可以使用元素ID的名称创建一个新窗口:
$('.see-history').bind('click', function(event) {
var id = $(this).data('idref');
try {
window.open('about:blank', 'mynewwindow_' + id);
$('#myform').find('#data').val(id);
$('#myform').attr('target', 'mynewwindow_' + id).submit();
} catch(e) {}
return false;
});
答案 1 :(得分:1)
试试这个。对于您的JavaScript onclick
处理程序:
function phistory(myVar) {
var myurl = '../main/patient_history.php?data='+myVar;
window.open(myurl);
}
然后,在您的PHP文件中:
$phid = $_REQUEST["data"];
echo $phid;
您的问题是您误解了jQuery .post()
方法的使用。它只是检索页面(使用指定的POST参数) - 它不会修改页面,这样当您在新窗口中打开它时,它将具有您指定的ID参数。我将其切换为不再使用jQuery的.post()
,而只是通过使用?data=[YOUR-ID]
打开新窗口来使用GET参数。您会注意到,PHP保持大致相同,但我更改了echo语句,以在变量名称前包含$
符号。这可能只是问题上的一个错字,但如果在您的代码中,这是问题的一部分。
另一种可能性是完全从查询字符串中删除ID,而是将其作为全局变量存储在第一页上,然后在第二页上使用window.opener
属性检索它,如下所示:
第一页:
var pid=0;
function phistory(myVar) {
pid=myVar;
window.open("../main/patient_history.php");
}
第二页(JavaScript):
pid=window.opener["pid"];
alert(pid); //Just to check that it's working