Также известна как Белая страница смерти или Белый экран смерти . Это происходит, когда отчет об ошибках отключен, и произошла фатальная ошибка (часто синтаксическая ошибка).
Если вы включили протоколирование ошибок, вы найдете конкретное сообщение об ошибке в своем журнале ошибок. Обычно это будет в файле php_errors.log, либо в центральном месте (например, /var/log/apache2
во многих средах Linux), либо в самом каталоге самого скрипта (иногда используется в среде совместного размещения).
Иногда может быть более простым временно отображать ошибки. На белой странице отобразится сообщение об ошибке. Будьте осторожны, потому что эти ошибки видны всем, кто посещает веб-сайт.
Это легко сделать, добавив в начале скрипта следующий код PHP:
ini_set('display_errors', 1); error_reporting(~0);
Код включит отображение ошибок и установит отчетность на самый высокий уровень.
Поскольку во время выполнения ini_set()
он не влияет на синтаксические ошибки синтаксиса. Эти ошибки появятся в журнале. Если вы хотите также отобразить их на выходе (например, в браузере), вам необходимо установить директиву display_startup_errors
на true
. Сделайте это либо в php.ini
, либо в .htaccess
или любом другом методе, который влияет на конфигурацию перед временем выполнения .
Вы можете использовать те же методы для установки параметра log_errors и error_log , чтобы выбрать ваше собственное место в файле журнала.
Если вы посмотрите в журнале или используете дисплей, вы получите гораздо лучшее сообщение об ошибке и строка кода, где ваш скрипт останавливается.
Похожие вопросы:
Связанные ошибки:
Google-fu: проблема с повторителем переключателя asp.net
Действительно печальное последствие идентификационного искажения. Мое взятие создало бы - или выбрало бы одного из доступных многих - пользовательский элемент управления, который добавляет поддержку того же имени на клиенте.
Подсказка ASP.NET: Используя Средства управления RadioButton в Повторителе
Это - код для функции JavaScript:
function SetUniqueRadioButton(nameregex, current)
{
re = new RegExp(nameregex);
for(i = 0; i < document.forms[0].elements.length; i++)
{
elm = document.forms[0].elements[i]
if (elm.type == 'radio')
{
if (re.test(elm.name))
{
elm.checked = false;
}
}
}
current.checked = true;
}
код связан с Повторителем через событие ItemDataBound. Для него для работы правильно необходимо знать название управления Повторителем, а также GroupName, который Вы присваиваете RadioButtons. В этом случае я использую rptPortfolios в качестве названия Повторителя и Портфели как название группы:
protected void rptPortfolios_ItemDataBound(object sender,
RepeaterItemEventArgs e)
{
if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType
!= ListItemType.AlternatingItem)
return;
RadioButton rdo = (RadioButton)e.Item.FindControl("rdoSelected");
string script =
"SetUniqueRadioButton('rptPortfolios.*Portfolios',this)";
rdo.Attributes.Add("onclick", script);
}
КАСАТЕЛЬНО: http://www.codeguru.com/csharp/csharp/cs_controls/custom/article.php/c12371/
Владимир Смирнов уже создал отличный настраиваемый элемент управления, решающий эту проблему. Мы использовали GroupRadioButton в наших проектах, и он отлично работал с переключателями, созданными внутри репитера, и другими вне репитера, которые были частью одной группы.
Возможно, это не идеальное решение для всех, но я сделал следующее, используя jQuery.
etc ...
Затем включите следующий код на главную страницу. (или все ваши страницы)
$(function() {
//This is a workaround for Microsoft's GroupName bug.
//Set the radio button's groupName attribute to make it work.
$('span[groupName] > input').click(function() {
var element = this;
var span = $(element).parent();
if (element.checked) {
var groupName = $(span).attr('groupName');
var inputs = $('span[groupName=' + groupName + '] > input')
inputs.each(function() {
if (element != this)
this.checked = false;
});
}
});
});
Это могло бы быть немного лучше ..
У меня есть пользовательский элемент управления, который по сути представляет собой набор радиокнопок внутри ретранслятора, каждый экземпляр пользовательского элемента управления имеет общедоступное свойство FilterTitle, которое уникально для каждого экземпляра.
добавьте эти два свойства в свой радиокнопку, заменив FilterTitle своим собственным именем общедоступного свойства
onclick='<%# "$(\"input[name$=btngroup_" + FilterTitle + "]\").removeAttr(\"checked\"); $(this).attr(\"checked\",\"checked\");" %>' GroupName='<%# "btngroup_" + FilterTitle %>'
проще.
onclick="$('input[name$=btngroup1]').removeAttr('checked'); $(this).attr('checked','checked');" GroupName="btngroup1"