WordPress

Pomoc dotycząca żądań jquery/ajax

  • 1 lutego, 2024
  • 3 min read
Pomoc dotycząca żądań jquery/ajax


Mam na stronie 2 formularze, które muszę przesłać i pozostać na tej samej stronie. Pierwszy formularz działa dobrze, ale drugi formularz przejdzie do strony admin-ajax.php.

Pierwszy formularz/żądanie jQuery i Ajax
Jak mówiłem, ta część działa dobrze.

<form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="commentform" class="commentform">
    <textarea name="comment" id="comment" class="commentbox" rows="5" cols="150" required></textarea><br />
    <input type="hidden" name="eventid" id="eventid" value="<?php echo $id; ?>" />
    <input type="hidden" name="userid" id="userid" value="<?php echo $userid; ?>" />
    <input type="hidden" name="action" value="commentform">
    <button class="commentbtn">Add Comment</button>
</form>

$('.commentform').submit(function (e) {
    e.preventDefault();
    var commentform = $('.commentform');
    $.ajax({
        url: commentform.attr('action'),
        data: commentform.serialize(), // form data
        type: commentform.attr('method'), // POST
        beforeSend: function (xhr) {
            commentform.find('button').text('Processing...');
        },
        success: function (data) {
            commentform.find('button').text('Add Comment');
            $(".commentform")[0].reset();
            $('#response').html(data); // insert data
        }
    });
    return false;
});

Pierwszy formularz/żądanie jQuery i Ajax
Ten formularz przeniesie mnie na stronę admin-ajax.php. (przynajmniej przetwarza dane, po prostu nie pozostaje na bieżącej stronie)

<form action=" method="POST" id="replyform19" class="replyform">
    <textarea name="reply" class="commentbox" rows="5" cols="150"></textarea>
    <input name="eventid" type="hidden" value="1"><input name="userid" type="hidden" value="1">
    <input name="parentid" type="hidden" value="19"><input name="action" type="hidden" value="replyform">
    <button class="newreplybtn" id="newreplybtn19">Reply</button>
    <button class="cancelbtn" id="cancelbtn19" value="19">Cancel</button>
</form>

$('.replyform').submit(function (e) {
    e.preventDefault();
    var replyform = $('.replyform');
    $.ajax({
        url: replyform.attr('action'),
        data: replyform.serialize(), // form data
        type: replyform.attr('method'), // POST
        beforeSend: function (xhr) {
            replyform.find('button').text('Processing...');
        },
        success: function (data) {
            $('#response').html(data); // insert data
        }
    });
    return false;
});


Źródło

Warto przeczytać!  Bezpieczeństwo — atak polegający na wstrzyknięciu krótkiego kodu