php - jquery - ajax help on wordpress - what's wrong with my code?
Hey all! I'm new to this site and I think I can get help with the code I'm trying to write. I am new to wordpress, php and ajax and writing this simple addon that adds two numbers and shows the result below. I know it's useless; but it will help me learn
And the corresponding JavaScript (adder.js) -
// PREPARATIONS - Enqueue All Javascript
function ajax_enqueue_scripts($hook) {
wp_enqueue_script('adder', plugins_url('/js/adder.js', __FILE__), array('jquery'), '1.0', true);
}
add_action('admin_enqueue_scripts', 'ajax_enqueue_scripts');
// STEP I : Create admin menu
function adder_admin_menu() {
add_menu_page('ADDER', 'ADDER', 'manage_options', 'adder', 'display_adder_form', 'dashicons-plus', 81);
}
add_action('admin_menu', 'adder_admin_menu');
// STEP II : Display adder form on the menu page created above
function display_adder_form() {
//END PHP TAG TO WRITE SOME HTML?>
<!-- HTML FORM TO DISPLAY ADDER BEGINS -->
<div class="wrap">
<h1>The Ultimate Adder</h1>
<form id="adder_form" class="adder_form" name="adder_form" method="POST" action="/wp-admin/admin-ajax.php?action=ultimate_adder">
<input type="text" name="number1" id="number1" placeholder="#1" />
<input type="text" name="number2" id="number2" placeholder="#2" />
<input type="submit" class="button-primary" value="Calculate & Save To DB" >
</form>
</div>
<div class="answer">
<!--inner html is replaced by ajax -->
</div>
<?php //PHP TAG REOPENED
}
function ultimate_adder() {
$number1 = $_POST["number1"];
$number2 = $_POST["number2"];
$result = $number1 + $number2;
$result = (array)$result;
return json_encode($result);
}
?>
jQuery(document).ready(function($){ var wpajaxurl = '/wp-admin/admin-ajax.php?action=ultimate_adder'; $('form.adder_form').bind('submit', function(){ $form = $(this); var form_data = $form.serialize(); $.ajax({ 'method' : 'post', 'url' : wpajaxurl, 'data' : form_data, 'dataType' : 'json', 'cache' : false, 'success' : function (data, textStatus) { $(".answer").html("Answer:" + data["result"]); }, 'error' : function (jqXHR, textStatus, errorThrown) { alert("FAIL"); } }); return false; }); });My code works to a point that I get 'undefined' as my response below my form. Can someone point out what part of it is going bong? Thanks in advance for your time.
0