Отправить jQuery serialize () / serializearray (), исключая textarea - PullRequest
0 голосов
/ 14 апреля 2020

При публикации с помощью метода jQuery serialize захватываются все элементы массива, кроме текстовой области. Я проверяю тот же результат из var_dump и Firebug.

$(function() {
  $("#btnJQ").on("click", function() { //100
    var jqxhr = 'a=crea_inv&' + $('#frmData').find('input[name^="empl"]').serialize();
    console.log(jqxhr)
    $.post('jq.php', {
      'empl': jqxhr
    }, function(response) {
      $(".result").html(response);
    }); //.100
  });
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="frmData" action="" method="post">
  <table>
    <tr>
      <td>ID</td>
      <td>First Name</td>
      <td>Last Name</td>
    </tr>
    <tr>
      <td><input type="text" name="empl[0][id]" value="2135" /></td>
      <td><input type="text" name="empl[0][first_name]" value="John" /></td>
      <td><input type="text" name="empl[0][last_name]" value="Doe" /></td>
    </tr>
  </table>
  <textarea id="lnotes" name="empl[0][lnotes]" rows="4" cols="50">
        At .com you will learn how to make a website. We offer free tutorials in all web development technologies.
        </textarea>
  <br>

  <button id="btnJQ" type="button">JQ</button>

  <input type="submit" name="Submit" />
</form>

Однако при использовании стандартного подтверждения отображается значение textarea.

<?php
//parse array to readable str
$post_data = $_POST['empl'];
parse_str($_POST['empl'],$new_data);

//Now We have the new array saved in a variable called $new_data
 print_r($new_data);

?>

Результат от var_dump и firebug.

Array
(
    [a] => crea_inv
    [empl] => Array
        (
            [0] => Array
                (
                    [id] => 2135
                    [first_name] => John
                    [last_name] => Doe
                )

        )

)

Результат по стандартной форме отправки

Array ( [0] => Array ( [id] => 2135 [first_name] => John [last_name] => Doe [lnotes] => At .com you will learn how to make a website. We offer free tutorials in all web development technologies. ) ) At .com you will learn how to make a website. We offer free tutorials in all web development technologies.

1 Ответ

0 голосов
/ 14 апреля 2020

textarea не input

Вы можете использовать $(":input[name^=empl]") или просто $("[name^=empl]")

$(function() {
  $("#btnJQ").on("click", function() { //100
    $('#frmData').find('[name^="empl"]').each(function() { console.log(this.name)} )
var jqxhr = 'a=crea_inv&' + $('#frmData').find('[name^="empl"]').serialize();

console.log(jqxhr)
    $.post('jq.php', {
      'empl': jqxhr
    }, function(response) {
      $(".result").html(response);
    }); //.100
  });
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="frmData" action="" method="post">
  <table>
    <tr>
      <td>ID</td>
      <td>First Name</td>
      <td>Last Name</td>
    </tr>
    <tr>
      <td><input type="text" name="empl[0][id]" value="2135" /></td>
      <td><input type="text" name="empl[0][first_name]" value="John" /></td>
      <td><input type="text" name="empl[0][last_name]" value="Doe" /></td>
    </tr>
  </table>
  <textarea id="lnotes" name="empl[0][lnotes]" rows="4" cols="50">
        At .com you will learn how to make a website. We offer free tutorials in all web development technologies.
        </textarea>
  <br>

  <button id="btnJQ" type="button">JQ</button>

  <input type="submit" name="Submit" />
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...