0

私はこれを持っています

<a href='#?title=sample&url=sample.com'></a>

私が置いたのと同じページに

$title = $_GET['title'];
$url = $_GET['url'];

しかし、それは値を渡しません。コードの何が問題になっていますか?助けてください!

注: ページをリロードしたくないので # を付けたのは、後で JavaScript 関数 onclick を呼び出すためです。

ここに関数呼び出し onclick があります

<script language="JavaScript">
function overlay() {
el = document.getElementById("overlay");
el.style.visibility = (el.style.visibility == "visible") ? "hidden" : "visible";
}
</script>

要素「オーバーレイ」には次の値が含まれている必要があります

$title = $_GET['title'];
$url = $_GET['url'];
4

4 に答える 4

3

URL からハッシュ (#) を削除する必要があると思います。URL にハッシュ タグが必要な場合は、URL の最後にある必要があります。

mydomain.com?id=1#tag

あなたが持っているようにクエリ文字列の前にハッシュを配置すると、基本的にブラウザに「?title=sample&url=sample.com」という要素/ターゲットを見つけるように指示していることになりますが、これはおそらく気に入らないでしょう。

更新された質問について:

あなたのように URL にクエリ文字列の値を追加するのではなく、リンクを使用して JavaScript 関数を呼び出すほうがよいと思います。PHP がこれらの値を取得できるようにするには、ページをリロードしてサーバーにリクエストを送信する必要があります。ページをリロードしたくない場合は、リンクを次のように変更することをお勧めします。

<a onclick="overlay('This is the title','www.domain.com')">

そして、関数があります:

function overlay(theTitle, theURL) {
  el = document.getElementById("overlay");
  el.style.visibility = (el.style.visibility == "visible") ? "hidden" : "visible";
  el.innerHTML = theTitle+'<br>'+theURL;
}

これは、ページを更新しなくても必要な値を取得できることを意味します。

于 2012-07-26T06:01:13.240 に答える
1

#、ページのアンカーに移動しようとしていることをブラウザーに伝え、サーバーに対して別の HTTP 要求を作成しません。

サーバーにリクエストを送信する場合は、#シンボルを削除して、ページに URL を追加する必要があります。

<a href="mypage.php?title=sample&url=sample.com">
于 2012-07-26T06:01:08.083 に答える
1

#URL にはフラグメント識別子 (文字で始まる URL の最後の部分) のみが含まれます。

これにより、ページの特定の部分 (フラグメント識別子と一致する id 属性を持つ要素、または一致する名前を持つアンカー要素によって識別される) にリンクすることができ、完全にクライアント側で処理されます。サーバー。

#URI から文字を削除するか、クエリ文字列の後に配置してください。

(また、HTML が無効であり、文字参照の開始を示しており、データとして表示するよう&に表現する必要があることに注意してください)&amp;

于 2012-07-26T06:01:26.753 に答える
0

hrefから#を削除する必要があります。代わり$_SERVER["PHP_SELF"]に、(この)スクリプト名を保持するものを試してください

print('<a href='.$_SERVER["PHP_SELF"].'?title=SAMPLE&url=SAMPLE.COM'>Link</a>')
于 2012-07-26T06:08:36.670 に答える