Ich habe Probleme, eine Array-Antwort von einer PHP-Funktion in jQuery AJAX. Mein AJAX ist wie folgt:PHP zu AJAX-Antwort fehlgeschlagen [Objekt Objekt]
function getStats() {
target = $j(event.target);
parent = $j(target).closest('article');
property_id = $j(parent).attr('ID').replace('property-','');
post_id = $j(parent).attr('data-post-id');
$j.ajax({
url: ajaxobjects.ajax_url,
// dataType: 'json',
data : {
action : 'getStats',
property_id: property_id,
post_id: post_id
},
success : function(result) {
console.log('success, result is: ' + result + '|')
},
error : function(data) {
console.log('failed' + result);
}
})
}
Meine PHP-Funktion ist ziemlich lage so werde ich es nicht fügen Sie alle, aber die Schlüsselrolle am Ende ist:
$arr = array(
'total_this_week' => $total_this_week,
'total_this_month' => $total_this_month,
'total_last_month' => $total_last_month,
'total_this_year' => $total_this_year,
'total_all_time' => $total_all_time
);
print json_encode($arr);
... was, wenn ich verlassen die dataType: 'json'
off in dem AJAX-Skript gibt mir den folgenden JSON-Array in der Konsole:
{
"total_this_week": "783",
"total_this_month": "2341",
"total_last_month": "7117",
"total_this_year": "36247",
"total_all_time": "57792"
}
Aber ich kann es nicht result.total_this_week
mit Zugriff als ich sich nur einen String denken. Wenn ich dataType zu JSON einschalte, lautet das Konsolenergebnis failed[object Object]
.
Verwirrt. Was mache ich falsch?
Update Ich habe das Problem identifiziert. Es gibt eine suffixed 0 am Ende meines Arrays, aber ich habe keine Ahnung, woher es kommt. Ich habe sogar völlig die ganze Funktion entfernt und manuell erstellt das Array aber immer noch die json_encode Antwort auf AJAX hat die Null am Ende wie folgt:
`failed{"readyState":4,"responseText":"{\"a\":1,\"b\":2,\"c\":3,\"d\":4,\"e\":5}0","status":200,"statusText":"parsererror"}`
Lösung Nach einiger Spaß Stunden war es nichts zu mach mit meinem Code, zumindest nicht den Teil, den ich dachte. Wordpress fügt anscheinend eine Null zu admin-ajax.php Antworten hinzu. Die Lösung bestand darin, einfach die();
hinzuzufügen, nachdem das JSON-Array von PHP wiedergegeben wurde.
Der Ausgang empfiehlt Ihnen, die 'error' Handler in Ihrer AJAX-Request treffen sind. Überprüfen Sie die Netzwerkregisterkarte der Konsole, nachdem Sie die Anfrage gestellt haben, und notieren Sie sich den HTTP-Statuscode zusammen mit dem Antworttext. –
Der Statuscode ist 200 und zeigt korrekte URL/Variablen an, zum Beispiel 'admin-ajax.php? Action = getStats & property_id = 123456 & post_id = 78910'. Ich habe auch gerade 'result [0] .total_this_week' versucht, aber das gibt auch' failed [object Object] '. – d1ch0t0my
Sorry, mein Fehler Ich bekomme einen undefinierten Fehler, wenn ich 'result [0] .total_this_week' versuche. – d1ch0t0my