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

您不能使用 php 调用这样的 Javascript 函数,您需要在 javascript 中回显调用该函数的脚本。像这样的东西可能会起作用:

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

但这可能不是一个好方法。在 javascript 在浏览器上运行之前,php 在服务器上运行。让两种语言进行通信的一种更好的方法是将 AJAX 调用发送到 php 脚本。

编辑 澄清:您可以在脚本中回显对 Javascript 函数的调用,它将在您回显它的地方运行。但是在这里,php 仍然会将 Javascript 视为要打印在文档上的字符串。

于 2012-12-11T23:49:10.540 回答