0

I have created a plugin that will submit a form via ajax. Below is the php function.

add_action('wp_ajax_nopriv_audience_intel', 'audience_intel_ajax');
add_action('wp_ajax_audience_intel', 'audience_intel_ajax');
function audience_intel_ajax() {
    $likeit = $_POST['likeit'];
    $response = $_POST['response'];
    $postid = $_POST['postid'];

    add_option( 'testing_form_like', $likeit );
    add_option('testing_form_response', $response);

    global $wpdb;
    $tablename = $wpdb->prefix . "intel";

    $newdata = array(
        'radio' => $likeit,
        'feedback' => $response,
        'postid' => $postid
    );    

        $wpdb->insert (
        $tablename,
        $newdata
    );

    $result = "<p>Finished successfully!</p>";
    // json_encode($result);
    echo $result;
}

Here is my script.

jQuery(document).ready(function($) {
$('.audience_intel_container .close').click(function(){
    $('.audience_intel_container').fadeOut('fast', function(){

    });
});

$('.audience_intel_container button').click(function(){
    console.log('clicked');
    var formdata = $('#audience_intel_form').serialize();
    $.ajax({
        type : "post",
        dataType : "html",
        url : audience_intel_js.ajaxurl,
        data : 'action=audience_intel&'+formdata,
        success: function(response) {
            alert(response);
            $('.audience_intel_container').html(response);
        }
    })
})   
});

The form data is added to the database correctly, but I am not able show an output message after the request is complete. I have tried both return, echo, and echo json_encode in the ajax function.

I appreciate any insight.

  • After echo $result; you need to exit; – webaware Jan 9 '13 at 8:30
  • I have added the exit. But, I am still not getting any results. – Eric Binnion Jan 9 '13 at 8:38
  • If you watch the network tab in Chrome's developer tools or Firefox's Firebug extension, what is coming back from the server? Is it running successfully or generating an error? What is the output it returns? And: if the output is HTML, why are you telling jQuery that it's JSON? – webaware Jan 9 '13 at 8:42
  • Use die($result); instead of echo, and try logging the response in the the success function console.log(response); , and I think you should replace dataType: "json" with "html". – Pierre Jan 9 '13 at 8:53
  • FYI, die($result); and echo $result; exit; will do the same thing. – webaware Jan 9 '13 at 8:54
2

This is the final code I am using. Thanks to webaware for pointing out that I was not using the correct datatype.

   jQuery(document).ready(function($) {
        $('.audience_intel_container .close').click(function(){
        $('.audience_intel_container').fadeOut('fast', function(){

        });
});

$('.audience_intel_container button').click(function(){
    console.log('clicked');
    var formdata = $('#audience_intel_form').serialize();
    $.ajax({
        type : "post",
        dataType : "html",
        url : audience_intel_js.ajaxurl,
        data : 'action=audience_intel&'+formdata,
        success: function(response) {
            alert(response);
            $('.audience_intel_container').html(response);
        }
    })
})   
});

php

add_action('wp_ajax_nopriv_audience_intel', 'audience_intel_ajax');
add_action('wp_ajax_audience_intel', 'audience_intel_ajax');
function audience_intel_ajax() {
$likeit = $_POST['likeit'];
$response = $_POST['response'];
$postid = $_POST['postid'];

add_option( 'testing_form_like', $likeit );
add_option('testing_form_response', $response);

global $wpdb;
$tablename = $wpdb->prefix . "intel";

$newdata = array(
    'radio' => $likeit,
    'feedback' => $response,
    'postid' => $postid
);

$wpdb->insert (
    $tablename,
    $newdata
);

$result = "<p>Finished successfully!</p>";
// json_encode($result);
echo $result;
exit;
}
0

You will be better off using the $.post for ajax. Have a look here http://codex.wordpress.org/AJAX_in_Plugins for more information.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.