我在这里发现了一些类似的问题,但它们都在C#中。
请告诉我使用弹出窗口显示服务器端错误消息的最简单方法。
弹出窗口可能类似于thickbox,modalpopup等...
以下是示例代码。我没有在弹出窗口中收到错误消息。
<script type="text/javascript" src="thickbox/jquery-latest.js"></script>
<script type="text/javascript" src="thickbox/thickbox.js"></script>
<link href="thickbox/thickbox.css" rel="stylesheet" type="text/css" />
<span class="prtexterror" style="color:#FF0000;display:none;" id="hiddenModalContent" >{$error_login}</span>
{literal}
<script language="javascript" type="text/javascript">
$(document).ready(function() {
tb_show("Please, login", "?tb_inline=true&inlineId=hiddenModalContent&height=180&width=300&modal=true", null);
});
</script>
{/literal}
欢迎任何其他方式。 提前谢谢
答案 0 :(得分:2)
通常,PHP会在出现错误时将其错误输出到输出HTML流中,除非您将.ini设置“display_errors”设置为off。如果你想在模态弹出窗口(警告框,浮动div等)中显示它们,你必须在脚本中添加适当的逻辑来捕获它们:
<?php
$val = some_function_that_causes_an_error();
if (error_get_last()) {
$lasterror = error_get_last();
}
error_get_last()返回一个数组,按照指向PHP文档的链接查看格式是什么。
稍后在您的页面中,您必须将错误转换为您希望显示的任何格式。基本设置如下:
<script type="text/javascript">
var errmsg = <?php echo json_encode($lasterror) ?>;
alert('Server error of type ' + errmsg.type + ' at line ' + errmsg.line + ' in script ' + errmsg.file + ': ' + errmsg.message);
</script>
另外,请记住致命错误(语法错误,内存不足等等)无法捕获并将中止脚本,因此除非您通过AJAX访问脚本,否则您将获得一个空白页面或以PHP错误消息结尾的部分页面。