Как показать сообщение об ошибке на стороне сервера во всплывающем окне, используя php - PullRequest
0 голосов
/ 07 мая 2010

Я нашел некоторые из подобных вопросов здесь, но они все в 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}

Любые другие способы всегда приветствуются.заранее спасибо

1 Ответ

2 голосов
/ 07 мая 2010

Как правило, PHP будет извергать свои ошибки в выходной HTML-поток при их возникновении, если только для параметра .ini не задано значение display_errors. Если вы хотите отобразить их в модальном всплывающем окне (окно оповещения, плавающий 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.

...