0

重複の可能性:
PHPからJavaScript関数を呼び出す方法は?

私は学校向けのプロジェクトに取り組んでおり、ログインページで苦労しています。私のPHPコードでは、ユーザーが間違ったユーザー名またはパスワードを入力した場合、メッセージを表示し、メッセージが表示される背景色を簡単に変更するJavascript関数を呼び出したいと思います。これが私のJSとPHPのコードブロックです:

<script>
var flashContent = function () {
document.getElementById("outputlogin").style.backgroundColor = "#ffff00";
document.getElementById("outputlogin").innerHTML = "Incorrect login.";
function proxy() {
    updateColor(0);
}
setTimeout(proxy, 50);
}

var updateColor = function (newColor) {
var hexColor = newColor.toString(16);
if (hexColor.length < 2)
    hexColor = "0" + hexColor;
var colorString = "#ffff" + hexColor;

document.getElementById("outputlogin").style.backgroundColor = colorString;

function proxy() {
    updateColor(newColor);
}

if (newColor < 255) {
    newColor = newColor + 5;
    setTimeout(proxy, 50);
}
}
</script>

<?php
$username = $_POST['username'];
$password = $_POST['password'];

if(($username == "Ben") && ($password == "thepassword")){
//echo "SUCCESS";
session_start();
$_SESSION['bensedmgallerysesh'] = session_id();

header("Location:../index.php");

}else{
if($username != "" && $password != ""){
    javascript:flashContent();
}
}
?>

現在、ログインボタンを押した後、次のエラーメッセージが表示されます。

致命的なエラー:未定義の関数flashContent()の呼び出し

これを修正するにはどうすればよいですか?

4

4 に答える 4

2

サーバー側スクリプトでクライアント側関数を呼び出そうとしています。あなたはこれを行うことができます:

if($username != "" && $password != ""){
?>
    <script type="text/javascript">
        flashContent();
    </script>
<?php 
}

しかし、このようなサーバー側の処理を作成しようとするのを防ぐ方法で実際にロジックを分離する方が賢明かもしれません。このビジネスでは、組織力が大いに役立ちます。

于 2012-12-11T23:29:49.983 に答える
1

これを試しましたか:

echo '<script type="text/javascript"> flashContent(); </script>';

それ以外の:

javascript:flashContent();
于 2012-12-11T23:29:36.603 に答える
0

javascript: functionName()..のようなものはないと思います。

Javascript はユーザー空間で実行され、ブラウザによって解釈されます。

PHP はサーバー スペースで実行され、プリプロセッサによって処理されます。

そこですべきことは、PHP でユーザー名とパスワードをテストし、それらが間違っている場合は JSON 応答をクライアントに送り返すことです。クライアントで、JSON データを解析し、対応するメッセージを表示します。これを AJAX で行うことができます。

うまくいくことを願っています

于 2012-12-11T23:30:00.413 に答える
0

そのような Javascript 関数を php で呼び出すことはできません。javascript で関数を呼び出すスクリプトをエコーアウトする必要があります。このようなものがうまくいくかもしれません:

<?php
echo '<script> window.onload = function(){ flashContent(); } </script>';
?>

しかし、それはあまり良い方法ではないかもしれません。PHP は、JavaScript がブラウザーで実行される前にサーバーで実行されます。2 つの言語を通信させるためのより良い方法の 1 つは、AJAX 呼び出しを php スクリプトに送信することです。

編集 明確にするために:スクリプト内のJavascript関数への呼び出しをエコーアウトでき、エコーした場所で実行されます。しかし、ここでは、php は依然として Javascript をドキュメントに出力される文字列として扱います。

于 2012-12-11T23:49:10.540 に答える