Подтвердить что ты не робот

Каков наилучший способ отправки отключенных входов в рамках запроса JQuery AJAX?

У меня довольно сложная форма, которая обеспечивает проверку в реальном времени и обратную связь с пользователем, использующим его при вводе данных. Части формы могут быть отключены из-за формы "бизнес-логики" входов, но серверная сторона должна знать значение этих отключенных входов, чтобы выполнить некоторую проверку в запросах AJAX.

Я использовал JQuery для сериализации всей формы $(form).serialize() и отправки всех этих данных на сервер во время моих запросов AJAX, но в этих сериализованных данных будут отсутствовать любые входы, которые отключены. Итак, каков наилучший способ включить все данные формы (даже отключенные входы) с каждым запросом AJAX?

Моя текущая мысль состоит в том, чтобы прикрепить функцию к ajaxStart (обратный вызов), которая создала бы хэш-карту на стороне клиента для всех отключенных атрибутов входных данных формы, включила все входы, сериализовала, а затем вернула бы атрибут первоначальное значение. Но это кажется чересчур сложным, и мне нужно что-то более простое, что не было бы хрупким.

4b9b3361

Ответ 1

Попробуйте сделать что-то подобное, чтобы сериализовать форму:

   $(function() {
      $('input[type=button]').click( function() {
          var form = $('form').serialize();
          $('input[disabled]').each( function() {
              form = form + '&' + $(this).attr('name') + '=' + $(this).val();
          });

      });
   });

Тестирование HTML

<form action="/action">
   <input type='text' disabled='disabled' value='hey' id='hey' name='hey' />
   <input type='text' value='ho' id='ho' name='ho' />
   <input type='text' value="hi" id='hi' name='hi' />
   <input type='button' value="Serialize" />
</form>

Выход

ho=ho&hi=hi&hey=hey

Ответ 2

Если ваш сервер принимает JSON, вы можете создать объект JSON с jQuery (использовать операторы выбора jQuery для включения необходимых входных тегов), а затем отправить его на сервер как объект - более подробную информацию здесь: http://encosia.com/2009/04/07/using-complex-types-to-make-calling-services-less-complex/.

В принципе, сделайте что-нибудь вроде этого:

var formInputs = { };

$('input[type=text]').each(function() {
  formInputs[this.id] = this.value;
});

Ответ 3

Части формы могут быть отключены из-за формы "бизнес-логика" входов

Вы можете использовать атрибут "readonly", чтобы отключить эти поля ввода. Сделайте следующее:

<input type="text" readOnly="readOnly" />

Атрибут readonly указывает, что поле ввода должно быть доступно только для чтения. Поле только для чтения не может быть изменено. Однако пользователь может выполнить вкладку, выделить его и скопировать текст из него.

from: HTML-вход readonly Атрибут

Поле только для чтения также может быть отправлено на сервер в виде строки запроса.

Ответ 4

Ну, еще один вариант - просто добавить скрытое поле со значением, которое вы не отправили на сервер.

Не забудьте использовать другой (фиктивный) идентификатор для тега, который вы отключите, чтобы избежать конфликта.

Ответ 5

отправить отключенное значение в конец, используя .serilize() через форму submit, используя jquery для ajax,

<HTML>
<HEAD>
<script>
$(document).ready(function(){
$("#submid").click(function() { // loginForm is submitted
$('#ayyappa').removeAttr('disabled');
$.ajax({
url: "urls", 
data:{
"sel_opt":$("#ayyappa").attr("value"),
} 

}); // ajax
$("#Number").attr("disabled", "disabled");
});//click
});


</script>

</HEAD>

<BODY><input type='text' id="ayyappa"  name='ayyappa' value="ayyappa" disabled> 

</BODY>
</HTML>