0

我知道这是一个常见问题,但我找不到任何答案。我有一个包含链接的 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 响应选项卡中看到完整新页面的回显。

4

2 回答 2

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;

   });
于 2012-09-08T19:14:36.197 回答
1

试试这个。对于您的 JavaScriptonclick处理程序:

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(),而只是通过打开新窗口来使用 GET 参数?data=[YOUR-ID]。您会注意到,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
于 2012-09-08T19:03:15.493 回答