webentwicklung-frage-antwort-db.com.de

Ajax-Kommentarformular auf der Startseite senden Warnungen erfolgreich, aber keine Einfügung

Ich versuche, ein auf der FrontPage veröffentlichtes Wordpress-Kommentarformular über Ajax weiterzuleiten. Bei der Übermittlung wird der Erfolgscode des JS ausgeführt, der Kommentar wird jedoch nicht in die Datenbank eingefügt. Vielen Dank im Voraus für jede Hilfe!

Das HTML

    <form id="commentform" type="post" class="commentform">
    <label for="comment"></label>
    <textarea id="comment" class="comment" name="comment" aria-    required="true"></textarea>
    <input name="comment_post_ID" value="210” id="comment_post_ID" class="comment_post_ID" type="hidden"/>
    <input name="comment_parent" id="comment_parent" class="comment_parent" value="0” type="hidden"/>
    <input type="hidden" name="action" value="trytosendit"/>
    <input type="submit">  
    </form>

ajaxtry2.JS

    jQuery(document).ready(function(e) {

e('.commentform').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();
jQuery.ajax({
  action:  'trytosendit',
  type:    "POST",
  url:     commentsent.ajaxurl,
  data:    {comment_parent:comment_parent,comment_post_ID:comment_post_ID,comment:comment},
  success: function(data) {
  alert(comment_parent + comment + comment_post_ID + 'This is data returned from the server ');
  }
});
return false;
  }});

Funktionen.php

    wp_enqueue_script( 'ajaxtry2', get_template_directory_uri() . '/JS/ajaxtry2.js', '', '', true );
    wp_localize_script( 'ajaxtry2', 'commentsent', array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));

function trytosendit() {
global $wpdb;
$comment_parent = $_POST['comment_parent'];
$comment_post_ID = $_POST['comment_post_ID'];
$comment = $_POST['comment'];
$time = current_time('mysql');

$data = array(
'comment_post_ID' => $comment_post_ID,
'comment_author' => 'admin',
'comment_author_url' => '',
'comment_content' => $comment,
'comment_type' => '',
'comment_parent' => $comment_parent,
'user_id' => 1,
'comment_author_IP' => '',
'comment_agent' => '',
'comment_date' => $time,
'comment_approved' => 1,
);

wp_insert_comment($data);


wp_die();}
add_action( 'wp_ajax_trytosendit', 'trytosendit' );
add_action( 'wp_ajax_nopriv_trytosendit', 'trytosendit' );
1
Alexander

Es hat eine Weile gedauert, aber das funktioniert (ein Kommentar wird erstellt, obwohl noch einige Werte fehlen, aber das Beheben dieses Teils ist einfach). Größte Änderungen: Aus irgendeinem Grund war ein 'Echo' in functions.php wichtig. Außerdem habe ich die 'Aktion' in ajaxtry2.js unter data geändert:

HTML (Werte sind fiktiv)

    <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();
    }

Großer Fan dieser Website, es hat mir schon oft geholfen!

0
Alexander