2010-11-18 3 views
2

私は広告Webサイトを持っています。index.htmlにはフォームがあります。 このフォームのターゲットはiframeに設定され、index.htmlにも設定されています。フォームを提出すると隠れた入力を更新しないブラウザがあります。

<body onload='submit_form();'> 

私はIFRAMEに表示され、私はページングを作成するためのMySQLの制限を使用して言ったような結果は次のとおりです。私は、ページがロードされたときにフォームを送信するためにbody onloadを使用

<form id="main" name="main" action="search.php" target="iframe" method="get"> 

。 は、私が表示され、ユーザーに「次」および「前」:(これはすべてのiframe内に表示されるので、私は以下のように親ページ上で関数を呼び出す)見ての通り

<a onclick='window.parent.page_upd(2)'>Page 2</a> 

function page_upd(p){ 
    document.getElementById('page').value=p; 
    document.forms['main'].submit(); 
} 

<input type="hidden" id="page" value="1"> 

私は隠されたセットページ番号index.htmlを内部入力私は、私はフォームを送信、およびアクション(search.php)で、私はそれに応じてページとディスプレイを取得、表示するユーザーを希望:

//search.php 
    $page = $_GET['page']; 

ページングの動作すべてのブラウザでは、別のページに移動します。 実際に検索結果をクリックして完全に別のリンク(show_ad.php)に移動して打撃を受けた場合、ユーザーは検索結果の最初のページに戻ります。

つまり、「ページ」が再び1に設定されています。 しかし、すべてのブラウザでFFとIE6 "を覚えている"というのは、 "ページ"の値であり、2番目のページの場合はまだ2であるため、2番目のページを示すフォームが送信されます。

ただし、ChromeとOperaでは、ページは '1'に設定されています。

「ページ」入力値がブラウザに戻ったときに再び1に設定されている理由は誰にも分かりますか?

ありがとうございます。

答えて

1

これはブラウザのキャッシュに関連していると思います。一部のブラウザでは、他のブラウザが正しいページをキャッシュから引き出している間に、そのページを新規に読み込んだようにページを読み込むように見えます。

この問題を回避するには、アプリケーションに適切なページにユーザーを送る独自の戻るボタンを含めることができます。

+0

は、その後、私は変数に沿って通過しなければならない、それはあまりにも多くの仕事を意味します。他の解決策? –

+1

より簡単なのは、セッション変数にページ番号を格納することです。$ _SESSION ['page_nbr'])、ページが呼び出されると、そのセッションで最後に訪れたページに自動的に切り替わります – Thariama

0

入力フィールドには、提出時にパラメータ名として使用するname属性が必要です。 id属性は、識別子としてのみ機能し、ページ上の要素を検索します。ページが再び読み込まれないためです

<input type="hidden" id="page" name="page" value="1"> 
           ^^^^^^^^^^^ 
+0

実際には、コードは単純化されています。 –

+1

ああ、ok ...私はそれが提出していたが、値を "失っている"ことを読んだので、この答えは当時の意味だった。 – scunliffe

0

、そのなしのonLoad()

+0

問題は、まったく別のリンクから戻ってくるときにボディー・ロードがトリガーされることです。これにより、「ページ」が1に設定されます。 –

関連する問題