Ajax-Erfolgsmeldung gibt HTML meiner Homepage zurück

Lesezeit: 2 Minuten

Benutzer-Avatar
jamil

Verwenden von Ajax und WordPress (versuchen, es richtig zu machen). Es ist ziemlich neu für mich, aber ich hatte das schon früher mit mehr Flair. Scheinbar zufällig fingen Probleme an, also habe ich meinen Code auf die grundlegendste Ebene heruntergebrochen, und ich kann das nicht einmal zum Laufen bringen !!! Ich habe das Gefühl, dass ich nur frustriert bin und es mich zwingt, einen einfachen Fehler zu übersehen. Ist daran etwas falsch?

Meine jQuery:

$.post(
    ajaxurl, // http://localhost/mysite/wp-admin/admin-ajax.php
    {action: "post-save"},
    function(response){
      alert(response);
    }
);

Mein PHP:

function update_post(){
    echo json_encode(array("success" => "all systems go"), JSON_FORCE_OBJECT ); 
    exit;
}
add_action( 'wp_ajax_post-save', 'update_post' );

Das Endergebnis ist, dass die Warnung funktioniert, was bedeutet, dass $.post erfolgreich ist (richtig?), aber die zurückgegebene Variable response ist die html-Quelle meiner Homepage…

Ich habe es herausgefunden…

Dies könnte einigen Neulingen wie mir helfen, die den gleichen Fehler machen, also beantworte ich meine eigene Frage 🙂

Es stellte sich heraus, dass ich nicht eingeloggt war. Die Antwort war jedoch seltsam und half, mich abzuschrecken und die gesamte Homepage zurückzugeben. Der Grund dafür ist, dass ich meine Funktionsdateien blockiert habe, die den Ajax-Responder wie folgt enthalten:

function block_users()
{
    if( !current_user_can( 'delete_pages' ) ) {  
        wp_redirect( get_home_url(), 301 );
        exit;
    }
}
add_action('admin_init','block_users');

Ich hätte wissen sollen, dass ich mich einlogge (dachte, ich wäre es), aber so unerwartete Ergebnisse und es war Freitag 🙂

Beachten Sie auch alle, die darauf stoßen: Wenn Sie möchten, dass jemand Ajax macht, ohne angemeldet zu sein, verwenden Sie die No-Priviledge-Version von wp_ajax, wp_ajax_nopriv.

add_action( 'wp_ajax_nopriv_action', 'function' );

Anstelle

add_action( 'wp_ajax_action', 'function' );

Ersteres erfordert keine Erlaubnis, dh eingeloggt zu sein, um Ajax-Anfragen zu stellen.

  • Ja, ich habe das gleiche Problem, ich habe diese Zeilen kommentiert. dann ist es jetzt ok, aber wie kann ich die Benutzer auf die Homepage umleiten? Meine Funktion ist die Funktion themeblvd_redirect_admin(){if (! current_user_can(‘edit_posts’)){wp_redirect(site_url()); Ausfahrt; } } add_action( ‘admin_init’, ‘themeblvd_redirect_admin’ );

    – Naveenbos

    18. Dezember 2013 um 12:13 Uhr

Ich hatte das gleiche Problem, und die Lösung bestand darin, DOING_AJAX in die Funktion einzufügen

function block_users()
{
    if( !current_user_can( 'delete_pages' ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
        wp_redirect( get_home_url(), 301 );
        exit;
    }
}
add_action('admin_init','block_users');

Obwohl spät, könnte jemand helfen.

Ich hatte ein add_action( 'init', 'login_redirect' ) und die hatte ein wp_redirect Funktion beim Login. Ich habe die hinzugefügt ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) Überprüfen Sie vor der Weiterleitung wie @lenasterg erwähnt und jetzt ist der Fehler weg.

1351930cookie-checkAjax-Erfolgsmeldung gibt HTML meiner Homepage zurück

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

Privacy policy