Wordpress Ajax Firefox нет ответа - PullRequest
       0

Wordpress Ajax Firefox нет ответа

1 голос
/ 20 января 2012

Я пробую простой ajax-тест в Wordpress / Buddypress.

Приведенный ниже код отлично работает в IE и Chrome.Но в Firefox вызывается javascript, но затем он просто обновляет текущую страницу.В консоли firebug нет ошибок, но ответ пуст.Я не думаю, что php вызывается.

Что мне нужно изменить, чтобы это работало в Firefox?

JavaScript:

jQuery(document).ready(function(){

    jQuery('#test-form input#save').click(function(){
            jQuery('.ajax-loader').toggle();

            jQuery('#save').attr({'disabled': true});

            jQuery.post( ajaxurl, {
                    action: 'test_save',
                    'cookie': encodeURIComponent(document.cookie),
                    '_wpnonce': jQuery("input#_wpnonce-save").val(),
            },
                    function(response) {              
                            jQuery('.ajax-loader').toggle();
            // alerts work up to here in all browsers
                            jQuery('#test-form').append(response);
                    });
            });

});

php:

add_action( 'bp_after_profile_loop_content', 'show_test', 100 );    
add_action('wp_ajax_test_save', 'test_save_function');

function show_test() { 
?>
<form action="#" id="test-form">
    <?php wp_nonce_field( 'save', '_wpnonce-save' ); ?>  
    <input type="submit" name="save" id="save" value = "test ajax"/>
    <span class="ajax-loader"></span> 
</form>

<?php
}

function test_save_function() {
check_ajax_referer('save');
echo "php -button was clicked";
}

Ответы [ 2 ]

4 голосов
/ 08 июня 2016

Обратите внимание, что это будет работать, только если вы вошли в WordPress в то время! Если вы не вошли в систему, wp_ajax вызывает хук wp_ajax_nopriv_myfunction .

Ссылки:

https://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_nopriv_(action) http://www.simonbattersby.com/blog/2012/06/wordpress-wp_ajax-returning-0-error/

Надеюсь, это сэкономит кому-то час или около того ...

1 голос
/ 24 января 2012

Это работает в FF, Chrome и IE. Также - добавить die (); в конце функции php

jQuery(document).ready(function(){

    jQuery('#test-form input#save').click(function(){
            jQuery('#save').attr({'disabled': true});

        jQuery.ajax({
            type: 'POST',
            url:"/wp-admin/admin-ajax.php",
            data: {
                action: 'test_save',
        '_wpnonce': jQuery("input#_wpnonce-save").val(),
            },
            success: function(results) {  
        jQuery('#save').attr('value', 'js was Clicked');
                jQuery('#test-form').append(results);
            }
    });
    return false;

    });
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...