Формы с действием = & ldquo; & rdquo;

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

26
задан nickf 6 January 2009 в 02:30
поделиться

4 ответа

Я обычно использую

<form method='POST' action='?'>

, Это означает текущий URL, но без параметров.

27
ответ дан staticsan 6 January 2009 в 02:30
поделиться
  • 1
    это было единственным рабочим ответом для меня, спасибо @Adelos – Christian 30 June 2016 в 11:51

Лучший способ, по-моему, не состоял бы в том, чтобы опустить атрибут действия (который не проверит) но определить фактическое действие для формы. Существует ли причина, Вы не определяете действие?

6
ответ дан Eran Galperin 6 January 2009 в 02:30
поделиться

Я всегда использовал (в PHP)

<form method="post" action="<?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?>">

Заставить мои формы отправлять себе.

2
ответ дан alex 6 January 2009 в 02:30
поделиться
  • 1
    Для меня это doesn' t работа. И это не было бы правильное решение: у Вас могли быть различные действия / поведения, определенные в изменять размеры обработчике событий, иногда они могли быть тяжелыми для выполнения, или они могли сделать призыв ajax к перезагрузке данных.. don' t знают.. Это doesn' t успокаивают меня. – andrea.rinaldi 2 October 2014 в 19:56

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, который стал фактическим стандартом.

11
ответ дан Gumbo 6 January 2009 в 02:30
поделиться
  • 1
    Это работало на меня, по крайней мере.:) Просто ellabore Ваш вопрос в следующий раз. – David Rodrigues 8 June 2016 в 22:09
Другие вопросы по тегам:

Похожие вопросы: