这是我的PHP代码。我希望使用警报窗口显示错误。


 if($ projectid ==“”)
 {
 $ error ='你必须选择一个项目。
点击& lsquo; back& rsquo;然后再试一次。';
包括error.html.php';
出口();
 }



 这是应该由浏览器解析的error.html.php

&# xA; <!DOCTYPE html>
< html lang =“en”>
 < HEAD>
 < meta charset =“utf-8”>
 < title>脚本错误< / title>
 < meta charset =“utf-8”>
 < meta http-equiv =“X-UA-Compatible”content =“IE = edge”>
 < meta name =“viewport”content =“width = device-width,initial-scale = 1”>


 < /头>

 <身体GT;

 <脚本> 
 var error =<?php echo $ error; ?取代;
 window.onload = function(){alert(error); }
 < /脚本>
 < / body>
< / html>



 使用脚本标记?他们阻止PHP运行吗?

答案 0 :(得分:6)
真正的问题是这就是渲染结果的样子:
var error = You must choose a project.
Click ‘back’ and try again.
这看起来像是有效的JavaScript吗?我想不是。
var error = <?=json_encode($error);?>;
这应该导致:
var error = "You must choose a project.\r\n Click ‘back’ and try again.";
好多了。
答案 1 :(得分:1)
您的问题是javascript
在客户端上运行,并将在页面加载后运行,因此在服务器上运行php
之后。
但是,您可以执行以下操作,允许php
在页面加载时设置javascript
变量的值,然后在加载页面后运行javascript
显示消息。
<?php
$error = "test me";
echo "<script>error = '" . $error . "'</script>";
?>
<script>
var error;
window.onload = function(){
alert(error);
}
</script>
<强>更新强>
根据您的修改,这里有一个更新的答案。
在加载页面时,需要echo "<script>error = '" . $error . "'</script>"
将$error
分配给javascript
变量。
if ($projectid=="")
{
$error = 'You must choose a project.
Click ‘back’ and try again.';
echo "<script>error = '" . json_encode($error) . "'</script>"
include error.html.php';
exit();
}
和html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Script Error</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<script>
var error;
window.onload = function(){ alert(error); }
</script>
</body>
</html>
答案 2 :(得分:0)
如果您的PHP中有$错误,那么您可以写:
<?php
echo "<html><head></head><body></body>";
$error = "whoops!"; // just for testing
echo "<script>\n";
echo "alert('{$error}')\n";
echo "</script>\n";
echo "</html>";
?>
一旦页面加载完毕就会发生警报,并在我的服务器上进行测试。这适用于服务器端发生$ error的情况。 (顺便说一句,感谢今天晚些时候这个有趣的问题!)
答案 3 :(得分:0)
实际上这很简单。
if ($projectid=="")
{
$error = 'You must choose a project.
Click ‘back’ and try again.';
include 'error.html.php';
exit();
}
$error
现在将包含You must choose a project. Click ‘Back’ and try again
。注意,没有引号,所以行
var error = <?php echo $error ; ?>;
在客户端看起来像这样:
var error = You must choose a project.
Click ‘Back’ and try again;
这自然会导致错误,因为它不是有效的javascript。您需要在$error
服务器端的定义内或PHP外部添加引号,这些引用的内容如下:
$error = '"You must choose a project.
Click ‘back’ and try again."';
OR
var error = '<?php echo $error ; ?>';
根据您的喜好......
答案 4 :(得分:0)
你当然可以使用内联php生成javascript代码。当然,它们将在不同的环境中执行,即服务器端与客户端,但这几乎无关紧要。
但是,您必须意识到这两种语言不是这样通信的,但JS的一部分是由PHP的输出生成的。你必须小心那个输出。您遇到的一个问题是JS不支持多行字符串,因此PHP中$ error的值不能有换行符。
请改为尝试:
if ($projectid=="")
{
$error = 'You must choose a project. Click \"back\" and try again.';
include 'error.html.php';
exit();
}
和
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Script Error</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<script>
var error = "<?php echo $error ; ?>";
window.onload = function(){ alert(error); }
</script>
</body>
</html>
修正清单: