Übergeben Sie Formularattribute an eine andere PHP-Vorlage in WordPress

Ich weiß, dass diese Frage oft gestellt wird, aber ich habe alles versucht und habe immer noch Probleme herauszufinden, warum es nicht funktioniert …

Also habe ich ein folgendes Formular (noch nicht endgültig):

 

Ich folge dem folgenden Tutorial: https://www.youtube.com/watch?v=f7ID_L91lIk&t=245s, aber es funktioniert nicht so wie beabsichtigt.

Ich habe den folgenden Button Event Listener:

 userSubmitButton.addEventListener( 'click', function(event) { event.preventDefault(); var gen; if(document.getElementById('fem').checked) gen = true; else if(document.getElementById('male').checked) gen = false; else gen = null; var formData = { 'gender' : gen }; adminAjaxRequest( formData, 'doctor_search_process' ); } ); 

Im Moment verwende ich nur ein Attribut, das Geschlecht. Meine Ajax-Anfrage lautet wie folgt:

 var adminAjaxRequest = function( formData, action ) { $.ajax({ type: 'POST', dataType: 'json', url: SliderData.adminAjax, data: { action: action, data: formData //submission: document.getElementById( 'xyq').value, //security: screenReaderText.security }, success: function(response) { if ( true === response.success ) { alert( 'this was a success' ); } else { alert( 'You Suck' ); } } }); }; 

sliderData.adminAjax ist im Grunde URL zu admin-ajax.php. Von hier aus füge ich die Aktion in functions.php hinzu

 function doctor_search_process() { $g = $_POST[ 'data' ][ 'gender' ]; } add_action( 'wp_ajax_doctor_search_process', 'doctor_search_process' ); add_action( 'wp_ajax_nopriv_doctor_search_process', 'doctor_search_process'); 

Das Problem ist, dass der Ajax-process immer fehlschlägt … Und außerdem muss ich Beiträge mit Tags auflisten, die weiblich oder männlich sind. Wie ich es verstehe, kann es nur in der Seite / Vorlage PHP-Datei getan werden. Auch wenn es funktioniert hat, weiß ich nicht, wie ich es an eine Seite php weitergeben soll … Kann mir jemand helfen? Warum versagt mein Ajax immer? Meine Webseite ist http://medclinic.x10host.com/sample-page/

Solutions Collecting From Web of "Übergeben Sie Formularattribute an eine andere PHP-Vorlage in WordPress"

Es sieht so aus, als hättest du den WP Codex gelesen, also hast du alles richtig eingerichtet. Ein paar kleine Dinge würde ich vorschlagen:

Stellen Sie sicher, dass die URL var korrekt ist

Sie verwenden sliderData.adminAjax , um auf die AJAX-URL zu verweisen. Ich war immer in der Lage, einfach ajaxurl zu benutzen, weil WP es für mich definiert. Ich würde den Schalter stellen, um sicherzustellen, dass Sie das richtige Ziel treffen. (Es ist immer möglich, dass Ihr sliderData Objekt nicht im Bereich ist oder die sliderData nicht richtig gesetzt wurde.)

Repariere PHP-Datei

In der function doctor_search_process() versuchen Sie, auf die POST-Variable zuzugreifen, als ob es sich um ein zweidimensionales Array handelt. Ich habe noch nie ein Beispiel gesehen, das dies nahelegt. Es hat immer funktioniert, dass ich direkt auf den POST var zugreifen konnte. Ich denke du solltest es versuchen:

$g = $_POST[ 'gender' ];

Aber dann solltest du es zurücksenden.

 function doctor_search_process() { $g = $_POST[ 'gender' ]; echo $g; wp_die(); } 

Ich habe in diesem Forum gelesen, dass, wenn die PHP-Datei nicht “stirbt” (), AJAX den process nicht beendet hat.

Verbessere Javascript

Ich mag die Art, wie Sie die AJAX-Aktion in die JavaScript-function übernehmen, die den AJAX initiiert. Sie scheinen jedoch den AJAX-Aufruf nicht korrekt abzuschließen. In Ihrer success erfassen Sie Erfolg und Misserfolg. Im Allgemeinen wird ein Fehler von seiner eigenen function erfasst. Auch die Erfolgsfunktion steht immer an erster Stelle, also muss sie nicht explizit sein. Das funktioniert für mich:

 $.post( data: { action: action, data: formData }, function( content ) { alert( content ); } ).fail( function( ) { alert( "you suck" ); });