Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Я обычно использую
<form method='POST' action='?'>
, Это означает текущий URL, но без параметров.
Лучший способ, по-моему, не состоял бы в том, чтобы опустить атрибут действия (который не проверит) но определить фактическое действие для формы. Существует ли причина, Вы не определяете действие?
Я всегда использовал (в PHP)
<form method="post" action="<?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?>">
Заставить мои формы отправлять себе.
action
атрибут требуется , но можно определить пустую ссылку URI, которая относится к текущему URI:
<form method="POST" action="">
<час> Редактирование хорошо, это на самом деле - зарегистрированная ошибка WebKit 528 + (см. Ошибка 19884 ), когда пустой URI используется с указанным основным URI с помощью BASE
элемент. В этом случае WebKit берет основной URI вместо того, чтобы разрешить пустой URI от основного URI.
, Но это корректное поведение согласно RFC 3986 :
5.1. Установление Основного URI
, термин "родственник" подразумевает, что "основной URI" существует, против которого применяется относительная ссылка. [†¦]
основной URI ссылки может быть установлен одним из четырех способов, обсудил ниже в порядке приоритета. Порядок очередности может думаться с точки зрения слоев, где самый внутренний определенный основной URI имеет наивысший приоритет. Это может визуализироваться графически следующим образом:
.----------------------------------------------------------. | .----------------------------------------------------. | | | .----------------------------------------------. | | | | | .----------------------------------------. | | | | | | | .----------------------------------. | | | | | | | | | <relative-reference> | | | | | | | | | `----------------------------------' | | | | | | | | (5.1.1) Base URI embedded in content | | | | | | | `----------------------------------------' | | | | | | (5.1.2) Base URI of the encapsulating entity | | | | | | (message, representation, or none) | | | | | `----------------------------------------------' | | | | (5.1.3) URI used to retrieve the entity | | | `----------------------------------------------------' | | (5.1.4) Default Base URI (application-dependent) | `----------------------------------------------------------'
В этом случае BASE
элемент с href
атрибут основной URI, встроенный в содержание . И основной URI, встроенный в содержание , имеет более высокий приоритет, чем [1 122], URI раньше получал объект . Таким образом, поведение WebKit’s является на самом деле ожидаемым поведением согласно RFC 3986.
Но в HTML 5 это поведение пустого URI в form
, ’s action
(все еще проект) отличается от RFC 3986:
, Если действие является пустой строкой, позвольте действие быть адрес документа .
Примечание: Этот шаг преднамеренное нарушение из RFC 3986, который потребовал бы базового URL, обрабатывающего здесь. Это нарушение мотивировано требованием совместимости с содержанием прежней версии. [RFC3986]
Откровенно говоря, комментарий HTML после этого примечания в чтениях исходного кода:
<!-- Don't ask me why. But that's what IE does. It even treats action="" differently from action=" " or action="#" (the latter two resolve to the base URL, the first one resolves to the doc URL). And other browsers concur. It is even required, see e.g. http://bugs.webkit.org/show_bug.cgi?id=7763 https://bugzilla.mozilla.org/show_bug.cgi?id=297761 -->
, Таким образом, это - скорее ошибка, порожденная из Internet Explorer, который стал фактическим стандартом.