从PHP块中调用Javascript函数

时间:2012-12-11 23:24:07

标签: php javascript

  

可能重复:
  How to call a JavaScript function from PHP?

我正在为学校做一个项目,我正在努力使用登录页面。在我的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 个答案:

答案 0 :(得分:2)

您正尝试在服务器端脚本中调用客户端功能。你可以这样做:

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

但实际上以一种阻止你尝试像这样编写服务器端处理的方式分离逻辑可能会更聪明。组织技能在这项业务中有很长的路要走。

答案 1 :(得分:1)

您是否尝试过这样做:

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

而不是:

javascript:flashContent();

答案 2 :(得分:0)

我不认为有像javascript:functionName()..

这样的东西

Javascript在用户空间中运行,由浏览器解释。

PHP在服务器空间中运行,由预处理器处理。

你应该做的是在PHP中测试用户名和密码,如果错误,请将JSON回复发送回客户端。在客户端中,解析JSON数据并显示相应的消息。您可能希望使用AJAX执行此操作。

希望有效

答案 3 :(得分:0)

你不能用php调用这样的Javascript函数,你需要在javascript中回显调用函数的脚本。这样的事情可能有用:

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

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

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