2016-04-21 17 views
0

Ich benutze WordPress & versuchen, einige AJAX hinzuzufügen.WordPress Ajax Call funktioniert nicht

ich eine Datei in [template] haben /js/ajax.js

function readSearch(){   
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
     alert(xhttp.status); 
    if (xhttp.readyState == 4 && xhttp.status == 200) {   
     document.getElementById("demo").innerHTML = xhttp.responseText; 
    } 
    }; 
    xhttp.open("POST", "ajax_info.php", true); 
    xhttp.send(); 
} 

Ich habe überall setzen ajax_info.php und ich noch eine xhttp.status == 404 erhalten, wenn der Knopf

geklickt
<p class="submit"><input type="submit" name="submit" id="submit" 
    class="button button-primary" value="Leave it to chance" onclick="readSearch()" /></p> 

ich habe Test für die Datei in

angezeigt werden ich bin nicht sicher, was ich vermisse den Anruf an die Arbeit.

+0

Sind Sie sicher, dass Ihr JS-Code geladen ist, wenn Sie auf die Schaltfläche klicken? –

+0

Es lohnt sich auch, den Ansatz von admin-ajax.php zur Behandlung von AJAX-Anfragen in WordPress zu überprüfen. – shmuli

Antwort

0

Hinweis: Sie müssen den vollständigen Pfad zu Ihrer PHP-Datei als hinzuzufügen:

Es gibt zwei Möglichkeiten, es zu tun:

1) Erwähnen Pfad manuell:

function readSearch(){   
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
     alert(xhttp.status); 
    if (xhttp.readyState == 4 && xhttp.status == 200) {   
     document.getElementById("demo").innerHTML = xhttp.responseText; 
    } 
    }; 
    xhttp.open("POST", "wp-content/themes/template_name/ajax_info.php", true); 
    xhttp.send(); 
} 

2) Verwenden von WordPress-Funktionen zum Hinzufügen von Pfad (der auf dynamische Weise funktioniert):

function readSearch(){   
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
     alert(xhttp.status); 
    if (xhttp.readyState == 4 && xhttp.status == 200) {   
     document.getElementById("demo").innerHTML = xhttp.responseText; 
    } 
    }; 
    xhttp.open("POST", <?php echo get_template_directory_uri()."/ajax_info.php"; ?>, true); 
    xhttp.send(); 
} 
Verwandte Themen