40

ユーザーがリンクをクリックしたときに、ページをリダイレクトせずに PHP コードを実行したいと考えています。これは可能ですか

<a href=""></a>

またはJavaScriptのonclickイベントで?

4

10 に答える 10

97

ええ、ページのAJAXロードを実行してからfalseを返すonclickによってトリガーされるjavascript関数が必要です。これにより、ブラウザーでリダイレクトされなくなります。プロジェクトで許容できる場合は、jQuery で次を使用できます。

<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
function doSomething() {
    $.get("somepage.php");
    return false;
}
</script>

<a href="#" onclick="doSomething();">Click Me!</a>

フォーム値を使用する必要がある場合は、ポストバックを行うこともできます ($.post() メソッドを使用します)。

于 2009-08-15T00:09:23.283 に答える
10

他の人が示唆しているように、JavaScript を使用して AJAX 呼び出しを行います。

<a href="#" onclick="myJsFunction()">whatever</a>

<script>
function myJsFunction() {
     // use ajax to make a call to your PHP script
     // for more examples, using Jquery. see the link below
     return false; // this is so the browser doesn't follow the link
}

http://docs.jquery.com/Ajax/jQuery.ajax

于 2009-08-15T00:10:36.977 に答える
5

この投稿が古いことは知っていますが、答えを追加したかっただけです。

指示なしでユーザーをログアウトすると言いました...このメソッドはリダイレクトしますが、ユーザーを元のページに戻します!これが私の実装です:

// every page with logout button
<?php
        // get the full url of current page
        $page = $_SERVER['PHP_SELF'];
        // find position of the last '/'
        $file_name_begin_pos = strripos($page, "/");
        // get substring from position to end 
        $file_name = substr($page, ++$fileNamePos);
    }
?>

// the logout link in your html
<a href="logout.php?redirect_to=<?=$file_name?>">Log Out</a>

// logout.php page
<?php
    session_start();
    $_SESSION = array();
    session_destroy();
    $page = "index.php";
    if(isset($_GET["redirect_to"])){
        $file = $_GET["redirect_to"];
        if ($file == "user.php"){
            // if redirect to is a restricted page, redirect to index
            $file = "index.php";
        }
    }
    header("Location: $file");
?>

そこに行きます!

完全なURLからファイル名を取得するコードはバグプルーフではありません。たとえば、クエリ文字列にエスケープされていない'/'が含まれている場合、失敗します。

ただし、URLからファイル名を取得するためのスクリプトはたくさんあります。

ハッピーコーディング!

アレックス

于 2011-12-08T09:21:47.993 に答える
4

AJAX を使用しない限り、ユーザーがページを離れずにリンクをクリックしたときに PHP を実行することはできません。PHP はサーバーサイドのスクリプト言語です。つまり、ブラウザがページを表示した瞬間、そこには PHP が含まれていません。

Javascript とは異なり、PHP は完全にサーバー上で実行されるため、ブラウザーは、背後でそれらを噛んだ場合、それを解釈する方法を知りません。PHP コードを呼び出す唯一の方法は、ページを更新するか、javascript を使用してページを取得することにより、ページ リクエストを作成することです。

AJAX ソリューションでは、基本的に、ページは JavaScript を使用して、ドメイン上の別のページにページ リクエストを送信します。Javascript はecho、応答で決定したものを取得し、それを解析して、そこから必要なことを実行できます。応答を作成しているときに、データベースの更新などのバックエンドも実行できます。

于 2009-08-15T00:07:46.437 に答える
2

あなたはリダイレクトせずに言った。そのJavaScriptコード:

<a href="JavaScript:void(0);" onclick="function()">Whatever!</a>

<script type="text/javascript">
function confirm_delete() {
    var delete_confirmed=confirm("Are you sure you want to delete this file?");

    if (delete_confirmed==true) {
       // the php code :) can't expose mine ^_^
    } else { 
       // this one returns the user if he/she clicks no :)
       document.location.href = 'whatever.php';
    }
}
</script>

試してみてください :) 気に入っていただければ幸いです

于 2012-10-17T15:29:22.427 に答える
1

誰もが投稿で提案しているように、唯一のより良い方法は AJAX です。別の方法は、以下のような IFrame を使用することです。

<iframe name="f1" id="f1"> </iframe>

<a href='yourpage.php' target='f1'>Click </a>

これで、IFrame で出力が得られます (IFrame をページ内の必要な場所に配置したり、イベントを非表示にしたり、スクリプトからの結果を隠したりできます)。

Ajax 以外のソリューションがこれより優れていることを願っています。

于 2011-05-06T02:17:24.640 に答える
-1

これもうまくいくはずです

<a href="#" onclick="callFunction();">Submit</a>

<script type="text/javascript">

function callFunction()
{
  <?php require("functions.php");  ?>
}
</script>

ありがとう、

カウチッパー

于 2011-07-01T10:26:07.873 に答える