我正在使用 if 条件,其中有一些脚本,然后是标题。但脚本不会工作,直接标题工作。
if(strpos(mysql_error(),'Email')!=false)
{
print '<script type="text/javascript">';
print 'alert("The email address is already registered")';
print '</script>';
header('Location: register.php');
}
我正在使用 if 条件,其中有一些脚本,然后是标题。但脚本不会工作,直接标题工作。
if(strpos(mysql_error(),'Email')!=false)
{
print '<script type="text/javascript">';
print 'alert("The email address is already registered")';
print '</script>';
header('Location: register.php');
}
用典型的 JS 替换 header。这就是诀窍。
if(strpos(mysql_error(),'Email')!==false)
{
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.alert('The email address is already registered')
window.location.href='register.php';
</SCRIPT>");
}
您的代码中有一些不同的错误。
首先,header
调用应该是您输出的第一件事。你不这样做。你之前有 unbuffered 。来自(非常好的)PHP 文档:print
请记住,必须在发送任何实际输出之前调用 header(),无论是通过普通 HTML 标记、文件中的空白行还是从 PHP 发送。使用 include 或 require 函数或其他文件访问函数读取代码并在调用 header() 之前输出空格或空行是一个非常常见的错误。使用单个 PHP/HTML 文件时也存在同样的问题。
其次,即使您使用了缓冲输出,Javascript 也永远不会执行,因为当有Location
标头时不会评估正文。
第三,使用mysql_error
找出某个记录是否存在不是要走的路。更好的是(伪代码):
SELECT email FROM table WHERE email="someEmail"
if (rows found) {
alert "email already exists"
}
祝你学习 web 开发好运!
利用:
window.location = "example.html";
请先查看@Bart Friederichs 的答案,即使标头工作正常,JavaScript 警报也不会工作,因为页面将在完成后被重定向,并且浏览器不会为您执行 JavaScript。
<?php
print '<script type="text/javascript">';
print 'alert("The email address is already registered");';
print 'window.location = "register";';
print '</script>';
?>
您也可以在没有 PHP 的情况下输出它!例如:
if(strpos(mysql_error(),'Email')!==false)
{
?>
<script type="text/javascript">
alert("The email address is already registered");
window.location = "register.php";
</script>
<?php
}
?>