Ajax-Antwort ist immer 0

Ich versuche herauszufinden, warum meine Ajax-Antwort immer 0 ist. Ich versuche, Metadaten in ein Jquery UI Dialogfeld basierend auf der ID des angeklickten Links zu laden. All dies befindet sich in einer single.php-Vorlagendatei – nicht sicher, ob das die Ursache ist oder nicht.

Hier ist mein Code (für den Raum bearbeitet):

jQuery( '#meta-dialog-box' ).dialog({ width: "500px", autoOpen: false, show: "blind", hide: "explode", resizeable: false, draggable: false, modal: true, position: "center", closeText: "X", dialogClass: "co-meta-dialog-wrapper" }); jQuery('a.co-meta-dialog').click(function(){ var id = $(this).attr('id'); var taxonomy = id.replace("co-",""); taxonomy = taxonomy.replace("-dialog",""); var title = $(this).text(); jQuery( "#meta-dialog-box" ).dialog( "option", "title", title ); jQuery( "#meta-dialog-box" ).dialog( "open" ); jQuery( "#meta-dialog-box" ).html( '<img width="62px" height="62px" style="margin:0 auto;" src="https://wordpress.stackexchange.com/questions/70406/ajax-response-is-always-0//images/loading.gif" alt="loading..." />' ); //$( "#meta-dialog-box" ).html('Meta Dialog Box For: ' + id); switch( id ){ case 'co-location-dialog': dialog_action = 'show_co_location_dialog'; break; case 'co-contact-dialog': dialog_action = 'show_co_contact_dialog'; break; //and so on.... default: break; }//end switch jQuery.post( UiAjax.ajaxurl, { action : dialog_action, postid: '', tax: taxonomy }, function( response, data, status ) { jQuery('#meta-dialog-box').html(response); //alert(data + ' ' + status); } ); return false; }); 

Ich habe Firebug überprüft und meine Aktion kommt richtig durch. So scheint es, dass mein PHP-Callback nicht korrekt ausgetriggers wird. Alle meine zurückrufen PHP-functionen haben die (); am Ende von ihnen. Und sind eingestellt, um die Metadaten zu drucken. Ich habe versucht Echo und Rückkehr, aber immer noch kein Glück.

Ich habe alle meine Ajax-Aktionen in meiner functions.php-Datei so:

 //location|address add_action('wp_ajax_show_co_location_dialog', array('DS_Lingerie','get_dialog_address') ); //contact info add_action('wp_ajax_show_co_contact_dialog', array('DS_Lingerie','get_dialog_contact_info') ); 

Muss ich dafür ein Plugin einrichten? Oder vermisse ich etwas ganz anderes? Ich habe jetzt seit ungefähr 6 Stunden meinen Kopf gegen die Wand geschlagen und kann nicht herausfinden, was ich hier falsch mache.

Jede und jede Hilfe wird sehr geschätzt! Ich muss vielleicht überdenken, wie ich das eingerichtet habe, vielleicht eine andere Modal- / Dialog-function oder etwas ähnliches. Vorschläge und Einblicke sind 100% willkommen! Danke im Voraus.

Solutions Collecting From Web of "Ajax-Antwort ist immer 0"

Sie können keine AJAX-Aufrufe aus öffentlichen Vorlagen hinzufügen.

  1. Sie müssen viel früher hinzugefügt werden
  2. Die Datei, die den Aufruf admin-ajax.php ist admin-ajax.php aus einem Grund: Ajax-Aufrufe dürfen nicht außerhalb von admin versteckt sein. Zum Beispiel, um Ihren Anruf zu verpacken ! is_admin() ! is_admin() lässt es fehlschlagen.
  3. Vorlagendateien sind nicht dazu bestimmt, die tatsächliche functionsdefinition und dergleichen zu enthalten. Hier kommen Plugins, Mu-Plugins oder Ihre themes.php Datei ins Spiel