Dateipfad für AJAX-Skript (in WordPress)

Lesezeit: 4 Minuten

Dateipfad fur AJAX Skript in Wordpress
FredK

Ich verwende dieses jquery-ajax-Skript zum Senden von E-Mails:

    $.ajax({
        url: process.php,    
        type: "POST",
        data: data,        
        cache: false,
    ...

in url Ich rufe die PHP-Datei auf, die E-Mails sendet, aber Ajax bekommt sie nur, wenn ich den vollständigen Pfad angebe:

url: "http://www.domain.com/wp-content/themes/site_theme/templates/process.php",

aber ich muss eine Syntax wie diese verwenden:

url: "../../templates/process.php",

oder Verwendung einer Variablen zur Deklaration in der HTML-Kopf-/Fußzeile

HTML

<script type="text/javascript">
  var urlMail="<?php bloginfo("template_url'); ?>/templates/process.php';
</script>

Skript

url: "../../templates/process.php",

aber in beiden oben genannten Fällen ruft die Browserkonsole diesen Fehler ab:

POST http://www.domain.com/templates/process.php 404 Not Found 1.56s

Wo liege ich falsch?

  • Hast du es versucht: url: "templates/process.php", ?

    – jtheman

    29. April 2013 um 8:23 Uhr

  • Was ist falsch daran, den vollständigen Pfad anzugeben?

    – Musa

    29. April 2013 um 8:37 Uhr

  • @jtheman: Mit Ihrer Lösung wird dieser Fehler abgerufen POST http://www.domain.com/contact-page/templates/form-contatti-mail.php 404 Not Found 1.34s

    – FredK

    29. April 2013 um 8:43 Uhr

  • @Musa: weil ich dieses Skript in anderen Projekten verwenden werde und den Pfad nicht jedes Mal aktualisieren möchte.

    – FredK

    29. April 2013 um 8:44 Uhr

  • Was wird eigentlich aus widergehallt <?php bloginfo('template_url'); ?> ??? Sieht leer aus, wenn das Ihr Fehler ist: POST http://www.domain.com/templates/process.php 404 Not Found 1.56s

    – jtheman

    29. April 2013 um 9:06 Uhr

Dateipfad fur AJAX Skript in Wordpress
RRikesh

Das ist nicht der Weg, Ajax in WordPress zu implementieren. Alle Ajax-Anfragen sollten an erfolgen admin-ajax.php.

In Ihrer Vorlagendatei:

<script type="text/javascript">
var ajaxurl="<?php echo admin_url("admin-ajax.php'); ?>';
</script>

In deinem js:

$.ajax({
        url: ajaxurl,    
        type: "POST",
        cache: false,
        data: data + '&action=sendmail' //action defines which function to use in add_action
});

in deiner functions.php:

function send_my_mail(){
#do your stuff
}

add_action('wp_ajax_sendmail', 'send_my_mail');
add_action('wp_ajax_nopriv_sendmail', 'send_my_mail');

Lesen über Ajax in Plugins.

  • Das wusste ich nicht. Ich werde lesen, aber ich entwickle kein Plugin! Es ist ein einfaches Kontaktformular. oder muss ich das jedes Mal tun, wenn ich Ajax verwende?

    – FredK

    29. April 2013 um 9:40 Uhr

  • Versuchte Ihren Code und ich bekomme eine Fehlermeldung: ReferenceError: sendmail is not defined - action:sendmail, und es lädt die Seite neu

    – FredK

    29. April 2013 um 10:04 Uhr


  • Ich habe vergessen, es in Anführungszeichen zu setzen. Aktualisiere meine Antwort!

    – RRikesh

    29. April 2013 um 10:14 Uhr

  • Lösung: ersetzen data: data mit data: data + '&action=sendmail'

    – FredK

    30. April 2013 um 11:14 Uhr

  • anstatt die js in die Vorlagendatei zu schreiben, zB; <script type="text/javascript"> var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>'; </script> wir können benutzen wp_localize_script()

    – Aamer Shahzad

    1. August 2016 um 19:19 Uhr


Ich würde Ihnen empfehlen, ein System wie die Registrierung zu verwenden, um alle “globalen” Werte an einem Ort zu speichern.

Entwurfsmuster für die Registrierung

Es gibt mein kleines jQuery-Plugin, falls dies für Sie interessant sein könnte. GitHub-Vertreter

<script type="text/javascript">
    $.Registry.set('urlMail', '<?php get_bloginfo('template_url'); ?>/templates/process.php';
</script>

Und um Werte aus der Registrierung zu erhalten, müssen Sie $.Registry.get(‘urlMail’) verwenden;

  • danke, aber ich würde es vorziehen, kein Plugin nur dafür zu verwenden. Außerdem verwende ich diese “Variablenmethode” bereits mit einem anderen Skript und es funktioniert. Ich verstehe nicht, warum das hier nicht funktioniert!

    – FredK

    29. April 2013 um 9:24 Uhr

Dateipfad fur AJAX Skript in Wordpress
FredK

Ich habe das Problem mit dem von RRikesh bereitgestellten Code gelöst, aber ersetzt

data: data 

mit

data: data + '&action=sendmail'

  • Sie hätten die Antwort von @RRikesh wirklich zur richtigen Antwort machen sollen, da sich diese Antwort auf eine zusätzliche Korrektur Ihres Ajax-Aufrufs bezieht und nicht auf die ursprüngliche Frage, die sich auf den Dateipfad bezieht und die er oben beantwortet hat. Ich weiß, es klingt pingelig, aber das grüne Häkchen ist der Ort, an dem die Leute nach der Antwort auf die gestellte Frage suchen.

    – happyUnStuck

    7. Juli 2013 um 23:51 Uhr


  • Ich habe die Antwort von RRikesh bearbeitet, um sie korrekt zu machen, da sie am höchsten bewertet ist. Ich denke, dies hätte in erster Linie der Kurs sein sollen, da es die richtige Antwort ist und nur eine kleine Bearbeitung erforderlich war.

    – Jake

    11. März 2014 um 17:13 Uhr

928260cookie-checkDateipfad für AJAX-Skript (in WordPress)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy