Как отправить AJAX-запрос из < формы > созданный jQuery

EDIT: array_chunk , который делает именно это.

Ну, мне не хотелось отлаживать, поэтому я написал версию с array_reduce :

$pergroup = 2;
$redfunc = function ($partial, $elem) use ($pergroup) {
    $groupCount = count($partial);
    if ($groupCount == 0 || count(end($partial)) == $pergroup)
        $partial[] = array($elem);
    else
        $partial[$groupCount-1][] = $elem;

    return $partial;
};

$arr = array(1,2,3,4,5);

print_r(array_reduce($arr, $redfunc, array()));

дает

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
        )

    [1] => Array
        (
            [0] => 3
            [1] => 4
        )

    [2] => Array
        (
            [0] => 5
        )

)

-1
задан Sayed Mohd Ali 18 January 2019 в 13:33
поделиться

1 ответ

Для достижения этой привязки к событию submit самого form, а не к событию click кнопки отправки. Также обратите внимание, что вы не должны использовать on* атрибуты события. Поскольку HTML-содержимое формы динамически добавляется в DOM, вы можете вместо этого использовать делегированный обработчик событий как для form, так и для span. Попробуйте это:

$(document).ready(function() {
  $('.click_notes').on('click', function() {
    var tid = $(this).data('question-id');
    $(this).closest('ul').find('.demo').html('<div class="comment_form"><span><b>X</b></span><form id="contactForm1" action="submit.php" method="post"><textarea required cols="50" class="span10" name="notes" rows="6"></textarea><br><input class="btn btn-primary" id="submitnotes" name="submit_notes" type="submit" value="Add Notes"><input type="hidden" name="submitValue" value="' + tid + '" /></form><br></div>');
  });

  $(document).on('submit', '#contactForm1', function(e) {
    e.preventDefault();

    $.ajax({
      type: this.method,
      url: this.action,
      data: $(this).serialize(),
      success: function(data) {
        console.log('Submission was successful.');
        console.log(data);
      },
      error: function(xhr) {
        console.log('An error occurred.');
        console.log(xhr);
      },
    });
  }).on('click', 'span', function() {
    $(this).parent().hide()
  });
});

Также обратите внимание, что вы включаете две версии jQuery, одна из которых (1.6.1) устарела почти на 8 лет. Я бы предложил вместо этого использовать одну ссылку на jQuery 3.3.1.

0
ответ дан Rory McCrossan 18 January 2019 в 13:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: