Ich versuche, ein Aktualisierungssystem für Benutzerdetails in wp-admin zu erstellen. Die Anfrage wird ordnungsgemäß mit allen Daten gesendet, während ich in den Entwicklertools (Netzwerk) nachgesehen habe, aber die Antwort wird 500 in roter Farbe empfangen
public function edit_employee_data()
{
global $wpdb;
$wpdb->update($wpdb->prefix. 'employee', array(
'name' => $_POST['name'],
'dob' => $_POST['dob'],
'email' => $_POST['email'],
'joining_date' => $_POST['joining_date'],
'address' => $_POST['address'],
'salary_package' => $_POST['salary_package'],
'gender' => $_POST['gender'],
'marital_status' => $_POST['marital_status'],
'department' => $_POST['department'],
'designation' => $_POST['designation']
));
}
add_action('wp_ajax_update_employee', array($this, 'edit_employee_data'));
Für den Ajax-Aufruf verwendetes Javascript:
<script>
jQuery(document).ready(function($) {
$('form.edit_employee').on('submit', function(e) {
e.preventDefault();
var name = $('#name').val();
var email = $('#email').val();
var dob = $('#dob').val();
var joining_date = $('#joining_date').val();
var address = $('#address').val();
var salary_package = $('#salary_package').val();
var gender = $('#gender').val();
var marital_status = $('#marital_status').val();
var department = $('#department').val();
var designation = $('#designation').val();
var message = $('.message').val();
$.ajax({
url: ajaxurl,
type: "POST",
data: {
action: 'update_employee',
name: name,
email: email,
message: message,
dob: dob,
joining_date: joining_date,
address: address,
salary_package: salary_package,
gender: gender,
marital_status: marital_status,
department: department,
designation: designation,
message: message,
},
success: function(response) {
$(".success_msg").css("display", "block");
},
error: function(data) {
$(".error_msg").css("display", "block");
}
});
});
});
</script>
Werte werden richtig mit dem Aktionsnamen gesendet, aber ich verstehe nicht, warum es nicht funktioniert.
Lösung des Problems
UPDATEOperationen benötigen WHEREKlauseln, es sei denn, Sie beabsichtigen wirklich, alle Zeilen in der Tabelle zu aktualisieren (in Ihrem Beispiel unwahrscheinlich). $wpdb->update()hat ein drittes Argument, das den WHEREFilter angibt, aber Sie haben es weggelassen.
Finden Sie heraus, wie Sie die Zeile – den Mitarbeiter – identifizieren, die Sie aktualisieren möchten. Es könnte employee_idzum Beispiel von sein.
Geben Sie dann so etwas wie das dritte Argument an.
[employee_id => $_POST[employee_id]]
Keine Kommentare:
Kommentar veröffentlichen