0

これはよくある質問ですが、答えが見つかりません。リンクを含むPHPファイルがあります。そのリンクがクリックされたときに別のページを新しいウィンドウで開きたいのですが、この新しく開いたページで、前のページでクリックされたリンクの ID 属性を取得したいと考えています。

Current page= 'patientreg.php'
Newpage to open in new window= '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ステートメントを変更しました。それは問題のタイプミスだったかもしれませんが、それがあなたのコードにあるのなら、それは問題の一部です。

もう1つの可能性は、クエリ文字列からIDを完全に削除し、代わりに最初のページにグローバル変数として格納してからwindow.opener、次のように2番目のページのプロパティを使用してIDを取得することです。

先頭ページ:

var pid=0;
function phistory(myVar) {  
    pid=myVar;
    window.open("../main/patient_history.php");                
}

2ページ目(JavaScript):

pid=window.opener["pid"];
alert(pid); //Just to check that it's working
于 2012-09-08T19:03:15.493 に答える