It took a while, but this works (a comment is created, albeit with still some missing values, but fixing that part is easy) Biggest changes: For some reason an ‘echo’ in functions.php was important. Also, I changed the ‘action’ in ajaxtry2.js under data:
HTML (values are fictional)
<form id="commentform" class="commentform">
<label for="comment"></label>
<textarea id="comment" class="comment" name="comment"></textarea>
<input name="comment_post_ID" value="1" id="comment_post_ID" class="comment_post_ID" type="hidden"/>
<input name="comment_parent" id="comment_parent" class="comment_parent" value="1" type="hidden"/>
<input type="submit">
</form>
ajaxtry2.JS
jQuery(document).ready(function(e) {
e('.commentform').on('submit', (ajaxSubmit));
function ajaxSubmit() {
var comment_parent=e(".comment_parent").val();
var comment_post_ID=e(".comment_post_ID").val();
var comment=e(".comment").val();
var BookingForm = jQuery(this).serialize();
jQuery.ajax({
type: 'POST',
url: commentsent.ajaxurl,
data: {BookingForm:BookingForm,action:'trytosenditr'},
success:function(msg){
alert(msg +comment);
}
});
return false;
}});
functions.php
function all_the_scripts2() {
wp_enqueue_script( 'ajaxtry2', get_template_directory_uri() . '/JS/ajaxtry2.js', '', array('jquery'), false );
wp_localize_script( 'ajaxtry2', 'commentsent', array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));
}
add_action( 'wp_enqueue_scripts', 'all_the_scripts2' );
function trytosendit() {
global $wpdb;
parse_str($_POST["BookingForm"], $output);
$comment_parent = $output['comment_parent'];
$comment_post_ID = $output['comment_post_ID'];
$comment = $output['comment'];
$time = current_time('mysql');
$current_user = wp_get_current_user();
$data = array(
'comment_post_ID' => $comment_post_ID,
'comment_content' => $comment,
'comment_parent' => $comment_parent,
'comment_date' => $time,
'comment_approved' => 0,
'user_id' => $current_user->ID,
);
wp_insert_comment($data);
echo 'hello';
wp_die();
}
Big fan of this Website, it has helped me a lot many times over!