Ajax wird nicht auf die database aktualisiert

Daher habe ich ein wenig Schwierigkeiten, Benutzereingaben zu erhalten, die ich in meine database schreiben kann.

Immer wenn ich versuche, die Tabelle zu aktualisieren, kann ich das erfolgreich am Frontend durchführen, aber beim Aktualisieren bleibt die Datenänderung nicht erhalten. Durch das Überprüfen der database wird außerdem überprüft, dass die Daten nicht geändert wurden … Es scheint, als ob der “Erfolg” im AJAX übergeben wird, aber aus irgendeinem Grund wird die database nicht aktualisiert.

Für meine HTTP-Anfrage teilt Chrome mir mit, dass meine POST-Anfrage aus irgendeinem Grund als GET-Anfrage verarbeitet wird, und ich bin nicht sicher, warum …

JS :

jQuery(document).ready(function($){ $(".edit_tr").click(function () { var commitID = $(this).attr('id'); // on click, hide the text $("#name_"+commitID).hide(); $("#created_"+commitID).hide(); $("#status_"+commitID).hide(); $("#disbanded_"+commitID).hide(); // on click, show the input fields for editing $("#name_input_"+commitID).show(); $("#created_input_"+commitID).show(); $("#status_input_"+commitID).show(); $("#disbanded_input_"+commitID).show(); }).change(function() { var commitID = $(this).attr('id'); var name = $("#name_input_"+commitID).val(); var date_created = $("#created_input_"+commitID).val(); var status = $("#status_input_"+commitID).val(); var disbanded = $("#disbanded_input_"+commitID).val(); var dataString = { id: commitID, name: name, date_created: date_created, status: status, disbanded: disbanded }; console.log(dataString); // can place loading image here jQuery.post({ url: "/wp-admin/admin-ajax.php", data: dataString, action: 'editCommittee', error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); alert(err.Message); }, success: function (response) { $("#name_"+commitID).html(name); $("#created_"+commitID).html(date_created); $("#status_"+commitID).html(status); $("#disbanded_"+commitID).html(disbanded); console.log("Got this from server: " + response); console.log("This is what happened to data: "); console.dir(dataString); } }); }); 

functionen.php :

 add_action('wp_ajax_editCommittee', 'editCommittee'); add_action('wp_ajax_nopriv_editCommittee', 'editCommittee'); function editCommittee() { global $wpdb; if($_POST['id']) { $id = esc_sql($_POST['id']); $name = esc_sql($_POST['name']); $created = esc_sql($_POST['date_created']); $status = esc_sql($_POST['status']); $disbanded = esc_sql($_POST['disbanded']); $wpdb->update('wp_committees', array( 'name' => $name ), array( 'committee_id' => $id ), array( '%s' ) ); exit; } } 

Meine Daten am Frontend werden in einer Tabelle ausgedruckt, so dass ich kein Formular habe … Jeder Einblick wäre hilfreich!

Bearbeiten:

var_dump($_REQUEST); Auf der Seite, die die Daten in der Tabelle ausgibt, gibt array(0){} zwölfmal die gleiche Anzahl von Elementen, die ich in der Tabelle drucke.

var_dump($_REQUEST); auf functions.php druckt nichts

console.log(response) auf JS- Datei druckt 0 .

Unabhängig davon, ob ich var_dump($_REQUEST) in die if-statement (vor $wpdb->update ) oder vor die if-statement $wpdb->update , wird nichts gedruckt.

Bearbeiten 2:

 function getAjax() { wp_register_script('ajax_url_script', get_template_directory_uri() . '/js/edit.js', array('jQuery')); wp_localize_script( 'ajax_url_script', 'postAjax', array('ajaxurl' => admin_url( 'admin-ajax.php' ))); wp_enqueue_script( 'ajax_url_script'); } add_action( 'wp_enqueue_scripts', 'getAjax' ); 

Solutions Collecting From Web of "Ajax wird nicht auf die database aktualisiert"

Um zu testen, funktioniert Ihr AJAX

 add_action( 'wp_ajax_editCommittee', 'test_ajax_request' ); add_action( 'wp_ajax_nopriv_editCommittee', 'test_ajax_request' ); function test_ajax_request() { echo "Request: " . PHP_EOL; var_dump( $_REQUEST ); exit; } 

Und aktualisieren Sie Ihre Anfrage, um die action in die gesendeten data :

 jQuery (document).ready (function($) { $ (".edit_tr").click (function() { var commitID = $ (this).attr ('id'); // on click, hide the text $ ("#name_" + commitID).hide (); $ ("#created_" + commitID).hide (); $ ("#status_" + commitID).hide (); $ ("#disbanded_" + commitID).hide (); // on click, show the input fields for editing $ ("#name_input_" + commitID).show (); $ ("#created_input_" + commitID).show (); $ ("#status_input_" + commitID).show (); $ ("#disbanded_input_" + commitID).show (); }).change (function() { var commitID = $ (this).attr ('id'); var name = $ ("#name_input_" + commitID).val (); var date_created = $ ("#created_input_" + commitID).val (); var status = $ ("#status_input_" + commitID).val (); var disbanded = $ ("#disbanded_input_" + commitID).val (); var dataString = { action: 'editCommittee', id: commitID, name: name, date_created: date_created, status: status, disbanded: disbanded }; console.log (dataString); // can place loading image here $.ajax({ type : "post", url: "/wp-admin/admin-ajax.php", data: dataString, error: function(xhr, status, error) { var err = eval ("(" + xhr.responseText + ")"); alert (err.Message); }, success: function(response) { $ ("#name_" + commitID).html (name); $ ("#created_" + commitID).html (date_created); $ ("#status_" + commitID).html (status); $ ("#disbanded_" + commitID).html (disbanded); console.log ("Got this from server: " + response); console.log ("This is what happened to data: "); console.dir (dataString); } }); }); 

Ich bekomme immer noch nichts, es ist wahrscheinlich deine URL. Sie können versuchen, die URL admin-ajax.php zu lokalisieren, wie diese Antwort zeigt: https://stackoverflow.com/a/22007593/5623301