Проверяете форму отправки с помощью условного? - PullRequest
0 голосов
/ 21 апреля 2011

Есть ли способ проверить, отправлена ​​ли форма с использованием оператора if?

Я пытаюсь написать функцию, которая независимо от того, что делает пользователь, всегда получает и отображает информацию.Но если пользователь отправляет форму, он отправляет эти данные в базу данных и сначала обновляет ее.

Я пытался найти события или методы, которые могли бы помочь мне в этом, но, похоже, ничего не нашелполезно.

функция getData () {

if ( FORM SUBMITTED ) {
    //POST and send
    request.open("POST", url, true);
    request.onreadystatechange = useResponse;
    request.send(str);
}

//GET and display
request.open("GET", url, true);
request.onreadystatechange = useResponse;
request.send(null);

}

РЕДАКТИРОВАТЬ: я не обновляю страницу.Я забыл упомянуть, что я делаю это с помощью AJAX.Когда страница загружается, эта функция запускается изначально (которая отображает данные формы).Но я не хочу, чтобы форма отправляла какие-либо данные, поскольку я просто загружаю страницу и фактически ничего не отправляю.

После загрузки страницы и нажатия кнопки «Отправить» вызывается эта функция.Что мне нужно, так это AJAX для отправки данных формы через POST, а затем переотображения их (сценарий выше описывает функцию).

Форма при отправке просто вызывает функцию: action="javascript:getData()"

Ответы [ 2 ]

1 голос
/ 21 апреля 2011

Я не совсем понимаю, о чем вы спрашиваете, потому что, если форма отправлена, браузер загружает новый HTTP-ответ, который может знать или не знать ничего о HTML-форме, которая привела к ее генерации.

[Изменить]

Похоже, что функция "getData" делает слишком много вещей, я бы создал отдельные функции для обработки запросов "get" и "post", например:

<body>
  <form name="form" action="#">...</form>
  <script type="text/javascript">
    var getData = function() {
      // XHR GET data and update DOM...
    };
    getData();
    var sendData = function() {
      // XHR POST form encoded data from form input elements...
    };
    document.form.onsubmit = function() {
      sendData();
      getData();
      return false; // Block the actual form submit event.
    };
  </script>
</body>

Функция jQuery serialize () демонстрирует, что необходимо для программного кодирования данных формы.

0 голосов
/ 21 апреля 2011

Хм, надеюсь, я вас правильно понимаю.Вы в основном хотите (условно) POST к одному URL и получить от другого (или того же самого) в последовательном?

Если это так, ваш код будет выглядеть примерно так:*

Поскольку XHR действительно очень полезен при асинхронном использовании, вам нужно вложить несколько обратных вызовов, чтобы убедиться, что все происходит в последовательном режиме, в противном случае GET может завершиться до POST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...