KeinProblem
Ensign
- Registriert
- Okt. 2013
- Beiträge
- 191
Hi,
mal wieder ein wahrscheinlich triviales Problem mit Wordpress / PHP / Ajax:
Ich habe ein Plugin geschrieben. Darin ist eine Tabelle, in der Einträge ein- und ausgeblendet werden können. Die ID der ausgeblendeten wird in einem array in meiner Datenbank gespeichert. Das funktioniert auch alles wunderbar. Per submitbutton wird ein $_Post-Wert übergeben, die Funktion wird ausgeführt und die Änderungen übernommen.
Nun wollte ich das eleganter per jQuery lösen, um den Reload nicht mehr zu haben.
Also habe ich die Buttons so umgebaut, dass sie bei onclick die nötigen Werte an eine javascript-Funktion übergeben. Auch das klappt wunderbar. Die Werte werden übernommen, verarbeitet und per jQuery.ajax an meine ajax.php geschickt. Dort wird alles weiterverarbeitet, der Datenbankeintrag wird geändert, klappt ebenfalls wunderbar.
Um zu prüfen, was genau zurückgegeben wird von der ajax.php des Plugins möchte ich mir die Antwort in der console anzeigen lassen. Die Antwort ist auch da, ich bekomme angezeigt, was ich zurückgeschickt habe. ABER: Die console zeigt mir vor der Ausgabe noch ein paar andere Javascripts an, den reinen Code. Wenn ich die Antwort nicht ausgeben lasse, werden auch die Scripts nicht anzezeigt.
Hier mal die relevanten Stellen des Codes:
'success' wird ausgegeben, danach ein paar Javascripts und dann meine tatsächliche Antwort.
in der ajax.php sieht das in etwa so aus:
Ich verstehe einfach nicht, warum ich nicht einfach nur den Wert ausgegeben bekomme. Vermutlich übersehe ich etwas total einfaches, aber ich komme gerade nicht darauf.
Ich danke schonmal im Vorfeld für jede Idee
mal wieder ein wahrscheinlich triviales Problem mit Wordpress / PHP / Ajax:
Ich habe ein Plugin geschrieben. Darin ist eine Tabelle, in der Einträge ein- und ausgeblendet werden können. Die ID der ausgeblendeten wird in einem array in meiner Datenbank gespeichert. Das funktioniert auch alles wunderbar. Per submitbutton wird ein $_Post-Wert übergeben, die Funktion wird ausgeführt und die Änderungen übernommen.
Nun wollte ich das eleganter per jQuery lösen, um den Reload nicht mehr zu haben.
Also habe ich die Buttons so umgebaut, dass sie bei onclick die nötigen Werte an eine javascript-Funktion übergeben. Auch das klappt wunderbar. Die Werte werden übernommen, verarbeitet und per jQuery.ajax an meine ajax.php geschickt. Dort wird alles weiterverarbeitet, der Datenbankeintrag wird geändert, klappt ebenfalls wunderbar.
Um zu prüfen, was genau zurückgegeben wird von der ajax.php des Plugins möchte ich mir die Antwort in der console anzeigen lassen. Die Antwort ist auch da, ich bekomme angezeigt, was ich zurückgeschickt habe. ABER: Die console zeigt mir vor der Ausgabe noch ein paar andere Javascripts an, den reinen Code. Wenn ich die Antwort nicht ausgeben lasse, werden auch die Scripts nicht anzezeigt.
Hier mal die relevanten Stellen des Codes:
Javascript:
<script type="text/javascript">
function toggle_anzeige($id, $meinarray){
var theid = 'eintrag'+$id;
var tablerow = document.getElementById(theid);
var anzeige = tablerow.getElementsByClassName('anzeige');
var eingeblendet = tablerow.getElementsByClassName('eingeblendet');
var ausgeblendet = tablerow.getElementsByClassName('ausgeblendet');
var action;
if(eingeblendet.length == 1){
action = 'eingeblendet';
}
if(ausgeblendet.length == 1){
action = 'ausgeblendet';
}
jQuery.ajax({
url: '/ajax.php',
type: 'post',
data:{
'id' : $id,
'action' : action,
'meinarray' : $meinarray
},
success: function(response){
console.log('success');
antwort = response;
console.log(antwort);
}
});
}
</script>
'success' wird ausgegeben, danach ein paar Javascripts und dann meine tatsächliche Antwort.
in der ajax.php sieht das in etwa so aus:
PHP:
function update_meinarray($meinarray){
Hier speichert er den Array neu (funktioniert ja) und gibt auch nichts zurück.
Die Funktion ist korrekt geschlossen. Es funktioniert ja auch.
}
if(isset($_POST['action'])){
//verarbeitet den array, erzeugt keine Ausgabe
if(POST_['action'] == 'ausgeblendet'){
$antwort = 'ist ausgeblendet';
update_meinarray($meinarray);
}
if(POST_['action'] == 'eingeblendet'){
$antwort = 'ist eingeblendet';
update_meinarray($meinarray);
}
echo json_encode($antwort);
}
Ich verstehe einfach nicht, warum ich nicht einfach nur den Wert ausgegeben bekomme. Vermutlich übersehe ich etwas total einfaches, aber ich komme gerade nicht darauf.
Ich danke schonmal im Vorfeld für jede Idee
