-2

何が起こるかを確認するために、JavaScript コードに PHP を埋め込んでみました。実際には何も起こりませんでした。誰かがこれを行う方法を提案できますか?

<head>
<script>
function myF() {
    n=document.getElementById("name").value
    r=document.getElementById("reason").value
    <?php
        $f = fopen("VisitorLog.txt", "w");
        fwrite($f, "Profile viewed on "+Date()+" by "+n+" Reason= "+r);
        fclose($f);
    ?>
    document.getElementById("name").disabled=true;
    document.getElementById("reason").disabled=true;
    document.getElementById("register").disabled=true;
    document.getElementById("link").style.display="inline";
    alert("You have successfully registered.");
}
</script>
</head>

私はこれらすべてに不慣れで、まだ学んでいます。もっと簡単な言葉で説明してみてください。:P

4

7 に答える 7

2

まず、PHP はサーバー上でレンダリングされ、Javascript はクライアント (Web ブラウザー) で解釈されることに注意してください。したがって、PHP から何かをエコーする場合、それは html とともに送信され、ここで想定しているように Javascript では実行されません。

ここで必要なことを達成するには、ビュー ログを更新する PHP スクリプトへの AJAX 呼び出しを行う必要があります。

編集:

update.php ファイルについて

<?php
$n = $_POST['n'];
$r = $_POST['r'];
$f = fopen("VisitorLog.txt", "w");
fwrite($f,"Profile viewed on ".date("Y-m-d H:i:s")." by ".$n." Reason= "+$r);
fclose($f);

そしてあなたのjavascriptで(jqueryがロードされていると仮定して)

<script>
function myF()
{
    $.post("update.php",
                { 
                    n : document.getElementById("name").value, 
                    r : document.getElementById("reason").value
                },
                function({
        document.getElementById("name").disabled=true;
        document.getElementById("reason").disabled=true;
        document.getElementById("register").disabled=true;
        document.getElementById("link").style.display="inline";
        alert("You have successfully registered.");
    }));
}
</script>
于 2013-10-16T07:16:55.033 に答える
1

みんなが言ったように。サーバー側のコードとクライアント側のコードを混在させることはできません.phpはサーバー側でレンダリング/実行され、クライアントのブラウザでjsが実行されます..

可能であれば、js と php を分けてください。実用的な解決策は次のとおりです。(ajax呼び出しにjQueryを使用すると仮定すると、実際には別のフレームワークまたはプレーンjsを使用できます)

js ファイル (またはヘッダーの script タグ) に

function log(message, success, failure){
    $.ajax({
        url: "logger.php",
        data: {
            message: message
        },
        success: success,
        error: failure
    })
}
function myF(){
    var n=document.getElementById("name").value,
        r=document.getElementById("reason").value;

    log( "Profile viewed on "+Date()+" by "+n+" Reason= "+r, function(){
        console.log('I successfully logged');
    }, function(jqXHR, textStatus, errorThrown){
        console.log('something went wrong', jqXHR, textStatus, errorThrown);
    });

    document.getElementById("name").disabled=true;
    document.getElementById("reason").disabled=true;
    document.getElementById("register").disabled=true;
    document.getElementById("link").style.display="inline";
    alert("You have successfully registered.");
}

ファイルでlogger.php

<?php
    if(isset($_GET['message'])){
        $f = fopen("VisitorLog.txt", "w");
        fwrite($f, $_GET['message']);
        fclose($f);
    }
?>
于 2013-10-16T07:33:31.020 に答える
1

PHP はサーバー側でレンダリングされます。JavaScript はクライアント側でレンダリングされます。

于 2013-10-16T07:18:01.350 に答える
0

PhP は、ページが読み込まれる前にサーバー上で実行されます。したがって、PhP が実行され、ページが読み込まれます。次に、JavaScript が読み込まれます。したがって、ここの JavaScript は PhP をトリガーしません。

これを行うには 2 つの方法があります。 - ページがサーバーに読み込まれたときに PhP スクリプトを実行する - AJAX を使用してサーバー側の php スクリプトを実行し、ユーザーの詳細を登録します。

于 2013-10-16T07:17:58.150 に答える
0

Javascript はクライアント側で実行され、php はサーバー側で実行されます。たとえば、サーバー側のタスクを実行するサーバー側のメソッドへの ajax 呼び出しを行う必要があります。

于 2013-10-16T07:18:02.843 に答える