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
UPDATE
Operationen benötigen WHERE
Klauseln, 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 WHERE
Filter 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_id
zum Beispiel von sein.
Geben Sie dann so etwas wie das dritte Argument an.
[employee_id => $_POST[employee_id]]
Keine Kommentare:
Kommentar veröffentlichen