Не удалось загрузить поля формы, добавленные через AJAX, в массив $ _POST - PullRequest
0 голосов
/ 23 февраля 2011

У меня есть простая и простая форма HTML, которая позволяет людям заказать несколько брошюр.Сначала форма загружается с чем-то похожим на это:

<script type="text/javascript">
  var tableRowN = 1;
</script> 

<form id="Order" name="Order" method="post" action="includes/orderCheck.php">
    <input id="name" type="text" name="name" width="100" />
    <table id="orderingTable">
      <tr class="lastRow">
        <td><div id="itemGroupdiv1">
            <input type="text" class="disabled" name="itemGroup1" id="itemGroup1" />
          </div></td>
        <td><div id="itemCodediv1">
            <input type="text" name="itemCode1" id="itemCode1" class="disabled" />
          </div></td>
        <td><div id="itemCodeVersiondiv1">
            <input type="text" class="disabledSmall" id="itemcodeversion1" name="itemcodeversion1" />
          </div></td>
      </tr>
    </table>
    <input type="submit" name="submit" id="submit"/>
  </form>

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

function createItemLine() {
tableRowN++;    
$('tr.lastRow').attr('class', '');
    $('#orderingTable').append('<tr class="lastRow"></tr>');
    $.ajax({
      url: "/orderingTable.php?rNumber=" + tableRowN,
      cache: false,
      success: function(html){
        $("tr.lastRow").append(html);
        alert('loaded');
      }
    }); 
}

Функция AJAX затем запускается в сценарий PHP, который создает следующую строку, объединяя идентификаторы и имена и т. д. с +1 к числу.

<td><div id="itemGroupdiv2">
<input type="text" class="disabled" name="itemGroup2" id="itemGroup2" />
</div></td>
<td><div id="itemCodediv2">
<input type="text" name="itemCode2" id="itemCode2" class="disabled" />
</div></td>
<td><div id="itemCodeVersiondiv2">
<input type="text" class="disabledSmall" id="itemcodeversion2" name="itemcodeversion2" />
</div></td>

Пока ничего удивительного?Все должно быть довольно просто ...

Проблема в том, что когда я добавляю новые строки (в Firefox и Chrome), новые строки полностью игнорируются процессом отправки формы, и они никогда не попадают в$ _POST array.

Это известная проблема?Я не сталкивался с этим раньше ...

Спасибо за любые указатели, H

Ответы [ 5 ]

1 голос
/ 24 февраля 2011

используйте jQuery.trim(data), но это не совсем так, потому что может повлиять на содержание ваших данных. или посмотрите этот может помочь вам

0 голосов
/ 26 января 2015

Я просто потратил довольно много времени, работая над такой проблемой.

Я заправлял поле ввода в форму, и это поле ввода не отображалось в массиве отправки $ _POST, это меня раздражало !!!! Aaaaanyway, я исправил это, просто проверив все мои html, и оказалось, что моя форма 'open' была внутри одного из основных элементов div на странице, а не снаружи.

следующим образом:

<div>
    <form>
        <input type="text" name="input_field">
    </div>
</form>

теперь установлено на:

<form>
    <div>
        <input type="text" name="input_field">
    </div>
</form>

Глупо, я знаю, но в массивном виде это было сложно заметить! Короче говоря, будьте аккуратны с вашим html, и он БУДЕТ работать, я надеюсь, что это кому-то поможет: -)

M

0 голосов
/ 22 мая 2012

Я обнаружил, что использование .html() для вставки содержимого вместо .append() или .prepend() заставляет вставленные поля формы работатькак и ожидалось.

0 голосов
/ 02 марта 2011

На некотором тщательном (и я имею в виду тщательном) выяснилось, что следующие простые (но очевидные) ошибки HTML могут вызвать эту проблему:

  1. Плохо сформированный код EG отсутствует и т. Д.
  2. Дублирующиеся или отсутствующие атрибуты "name" формы

При создании правильно проверенного HTML отправленная форма и все значения были правильно переданы в массив _POST.Наглядный урок в том, чтобы убедиться, что ваши разработчики обращают внимание на основы, прежде чем пытаться полностью погрузиться в свой подход к кодированию;)

0 голосов
/ 23 февраля 2011

В вашей таблице отсутствует идентификатор html?Селектор jQuery $ ('# orderingTable') ищет что-то с id = "orderingTable"

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