Отправка данных формы и действия в wordpress admin-ajax.php - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть форма, которую я хочу отправить своим данным на admin-ajax:

<form method="POST" id="form">
    <input type="text" name="name">
    <input type="number" name="phone">
    <input type="email" name="email">
    <textarea name="overview"></textarea>
    <input type="submit" name="submit" id="submit" value="Submit">
</form>

Javascript / jQuery код для отправки данных с использованием Ajax:

document.getElementById('submit').addEventListener('click', function(e){
    e.preventDefault();
    var form_data = $('#form').serialize();
    $.ajax('http://mywebsite.com/wordpress/wp-admin/admin-ajax.php', {
        method: "POST",
        data: form_data + {action: 'my_action'},
        success: function (response) {
            console.log(response);
        },
        error: function (err) {
            console.log('Error:' + err);
        }
    });
});

Также пробовал formData:

var form_data = new FormData();
form_data.append('form', $('#custom').serialize());
form_data.append('action', 'my_action');

Как отправить данные формы и действия my_action?

Ответы [ 3 ]

0 голосов
/ 08 сентября 2018

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

$(document).on('click', '#submit', function(){ // the id of your submit button
     var form_data = $('#your_form_data_id'); // here is the id of your form
     form_data.submit(function (e) {
        var my_action = "my_action";
        e.preventDefault();
           $.ajax({
              type: form_data.attr('method'), // use this if you have declared the method in the form like: method="POST"
              url: form_data.attr('action'), // here you have declared the url in the form and no need to use it again or you can also use the path like in your code
              data: form_data.serialize() +'&'+$.param({ 'my_action': my_action}), // here you are sending all data serialized from the form and appending the action value you assing when declare var my_action
              success: function (data) {
                    // after the success result do your other stuff like show in console, print something or else
              },
           });
      });
 });

Надеюсь, это поможет вам. если что-то не ясно, не стесняйтесь спрашивать, я постараюсь объяснить в комментариях.

0 голосов
/ 08 сентября 2018

Вы должны просто передать форму в новую форму FormData (), поэтому в вашем случае при отправке формы просто передайте новую форму FormData (e.target);

Надеюсь, это поможет

0 голосов
/ 08 сентября 2018

вам нужно изменить эту строку с data: form_data + {action: 'my_action'}, на data: {action: 'my_action', form_data:form_data},

jQuery(document).on("click","#submit", function(){
    e.preventDefault();
    var form_data =jQuery('#form').serializeArray();
    jQuery.ajax('http://mywebsite.com/wordpress/wp-admin/admin-ajax.php', {
        method: "POST",
        data: {action: 'my_action', form_data:form_data},
        success: function (response) {
            console.log(response);
        },
        error: function (err) {
            console.log('Error:' + err);
        }
    });
});

и измените тип ввода submit на button.

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