Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

117
Views
Submit form with AJAX and PHP without page reload

I have "add to favorite" feature in my wordpress project, I am using <form> to submit the feature. Each time I click on add to fav button it works, but the page is always reloaded which is annoying so I decided to use AJAX, but I can not connect it with my PHP file.

This is PHP file, where I wrote function for the feature

if (! function_exists('favorite_button_icon')) {

    function favorite_button_icon() {
        echo apply_filters( 'favorite_button_icon', get_the_favorite_button_icon() );
    }
}

if (! function_exists('get_the_favorite_button_icon')) {

    function get_the_favorite_button_icon() {

        $output = '';
        $action = $currentPath; // window.location.href
        $name   = is_favorite() ? 'remove_favorite' : 'add_favorite';
        $class  = 'favorite-button-pro' . ( is_favorite() ? ' favorite' : '' );
        $icon = is_favorite() ? 'Added' : 'Add';

        $output .= '<form method="post" id="favorite_user_post" 
                     class="favorite_user_post" action="'. $action .'">';
        $output .= '<button id="submit-favorite" type="submit" name="'. $name .'" 
                     value="'. get_the_ID() .'" class="'. $class .'">';
        $output .= $icon;
        $output .= '</button></form>';
        
        return apply_filters( 'get_the_favorite_button_icon', $output );
    }
} 

And I am just calling that function in html

<div class="add-to-favorites-option" > 
      <?php favorite_button_icon() ?>
</div>

Everything above works, but as I said, page is being reloaded.

This is my attempt to use AJAX

jQuery('#favorite_user_post').submit(function (e) {
    e.preventDefault();
    var form = jQuery(this);
    var url = form.attr('action');
    jQuery.ajax({
        type: 'POST',
        url: url,
        data: form.serialize(),
        success: function (data) {
            console.log(data);
        },
        error: function () {
            console.log('Fail');
        },
    });
});

I get absolutely no fire on submit, am I missing something?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

You need to use the wp_ajax_ hook: https://developer.wordpress.org/reference/hooks/wp_ajax_action/

Simple example below:

You PHP code to process the ajax request:

add_action( 'wp_ajax_my_action', 'my_action' );

function my_action() {
    // code that captures your ajax POST request

    wp_die(); // this is required to terminate immediately and return a proper response
}

Your Ajax call:

jQuery('#favorite_user_post').submit(function (e) {
    e.preventDefault();
    var form = jQuery(this);
    // note the added "my_action" to tell the server what function to fire (my be a better way to append this to your form data)
    var url = form.attr('action') + "&=my_action";
    jQuery.ajax({
        type: 'POST',
        url: url,
        data: form.serialize(),
        success: function (data) {
            console.log(data);
        },
        error: function () {
            console.log('Fail');
        },
    });
});
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!