jQuery .serialize () возвращает пустой - PullRequest
1 голос
/ 17 марта 2012

У меня есть эта форма внутри таблицы:

<table id="fields">
    <form method="post" id="accountform"></form>
    <tbody><tr><td class="key">First Name:</td><td class="value">bla bla</td></tr>
    <tr><td class="key">Last Name:</td><td class="value">bla bla</td></tr>
    <tr><td class="key">Email:</td><td class="editable"><input type="text" class="textbox" value="blabla" name="input0"></td></tr>
    <tr><td class="key">Cell Number:</td><td class="editable"><input type="text" class="textbox" value="123-456-7890" name="input1"></td></tr>
    <tr><td class="key">Extension:</td><td class="editable"><input type="text" class="textbox" value="1234" name="input2"></td></tr>
    <tr><td class="key">Authority Level:</td><td class="value">Admin</td></tr>
    <tr><td align="right" colspan="2"><input type="submit" value="Save" id="submit"></td></tr>
</tbody></table>

Javascript / JQuery:

$(document).ready(function(){
    $("form#accountform").submit(function() {
        alert($(this).serialize());
    });
});

Когда я отправляю форму, предупреждение выходит пустым. : | Я действительно понятия не имею, почему это происходит. Каждое текстовое поле имеет имя. Ранее я сериализовал формы, подобные этой (внутри таблицы).

Edit: Это «оригинальный» HTML (до того, как jQuery и браузер его отредактируют):

<table id="fields">
    <form method="post" id="accountform" action="">
    <tr><td class="key">First Name:</td><td class="value"><?php echo $_SESSION['firstname']; ?></td></tr>
    <tr><td class="key">Last Name:</td><td class="value"><?php echo $_SESSION['lastname']; ?></td></tr>
    <tr><td class="key">Email:</td><td class="editable"><?php echo $_SESSION['email']; ?></td></tr>
    <tr><td class="key">Cell Number:</td><td class="editable"><?php echo formatPhone($_SESSION['phone']); ?></td></tr>
    <tr><td class="key">Extension:</td><td class="editable"><?php echo $_SESSION['ext']; ?></td></tr>
    <tr><td class="key">Authority Level:</td><td class="value"><?php echo authToName($_SESSION['auth']); ?></td></tr>
    <tr><td align="right" colspan="2"><input type="submit" value="Edit" id="submit"/></td></tr>
    </form>
</table>

И это jQuery, который заменяет текст на текстовые поля:

$("td.editable").each(function(index) {
                $(this).html("<input type='text' class='textbox' value='"+$(this).html()+"' name='input"+index+"'/>");
})

Ответы [ 2 ]

3 голосов
/ 17 марта 2012

Проблема определенно в разметке:

<table id="fields">
    <form method="post" id="accountform" action=""> <!-- Form does not go in the table -->
    <tr>...</tr>
        ...
    <tr>...</tr>
    </form> <!-- Form does not go in the table -->
</table>

Оберните свою таблицу в теги <form> вместо того, чтобы помещать их в таблицу.

<form method="post" id="accountform" action="">
    <table id="fields">
        <tr><td class="key">First Name:</td><td class="value"><?php echo $_SESSION['firstname']; ?></td></tr>
        <tr><td class="key">Last Name:</td><td class="value"><?php echo $_SESSION['lastname']; ?></td></tr>
        <tr><td class="key">Email:</td><td class="editable"><?php echo $_SESSION['email']; ?></td></tr>
        <tr><td class="key">Cell Number:</td><td class="editable"><?php echo formatPhone($_SESSION['phone']); ?></td></tr>
        <tr><td class="key">Extension:</td><td class="editable"><?php echo $_SESSION['ext']; ?></td></tr>
        <tr><td class="key">Authority Level:</td><td class="value"><?php echo authToName($_SESSION['auth']); ?></td></tr>
        <tr><td align="right" colspan="2"><input type="submit" value="Edit" id="submit"/></td></tr>
    </table>
</form>

Работает fiddle (вставка в виде простых текстовых значений для того, что ваш PHP-код будет в суб).

2 голосов
/ 17 марта 2012

Ваш элемент <form> заканчивается преждевременно (см. Конечный тег рядом с закрывающим тегом?).

Попробуйте этот HTML вместо:

<form method="post" id="accountform">
  <table id="fields">
    <tbody>
      <tr><td class="key">First Name:</td><td class="value">bla bla</td></tr>
      <tr><td class="key">Last Name:</td><td class="value">bla bla</td></tr>
      <tr><td class="key">Email:</td><td class="editable"><input type="text" class="textbox" value="blabla" name="input0"></td></tr>
      <tr><td class="key">Cell Number:</td><td class="editable"><input type="text" class="textbox" value="123-456-7890" name="input1"></td></tr>
      <tr><td class="key">Extension:</td><td class="editable"><input type="text" class="textbox" value="1234" name="input2"></td></tr>
      <tr><td class="key">Authority Level:</td><td class="value">Admin</td></tr>
      <tr><td align="right" colspan="2"><input type="submit" value="Save" id="submit"></td></tr>
    </tbody>
  </table>
</form>​
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...