WordPress AJAX,返回数据问题

时间:2018-04-10 11:35:12

标签: json ajax wordpress response

经过多次尝试并搜索网页后,我提出了一些帮助,因为我真的疯了。

我正在我的一个WordPress模板文件中进行最简单的AJAX调用。

问题是返回的数据(response.responseText)是我主页的完整html内容(从!doctype到/ html),很奇怪。

我真的很害怕,因为我不知道出了什么问题,也无法在网上找到相同问题的答案。

这是JS:

(function() {
    "use strict";

    $('#myselector').on('click', function(e){
        e.preventDefault();
        $.ajax( {
            url: myvar.url,
            type: 'post',
            // if uncommented, console.log shows parseerror
            //dataType: 'json',
            data: {
                action: myvar.action,
                nonce: myvar.nonce,
                uid: myvar.uid
            },
        })
        .done( function( response, textStatus, jqXHR ) {
            console.log(response)
            console.log(textStatus)
            console.log(jqXHR)
        })
        .fail( function( jqXHR, textStatus, errorThrown ) {
            console.log(textStatus)
        })
        .then( function( jqXHR, textStatus, errorThrown ) {
            console.log(textStatus)
        })
    });

})();

这个JavaScript加载了wp_enqueue_scripts:

add_action( 'wp_enqueue_scripts', function () {

    wp_enqueue_script( 'fileid', get_theme_file_uri( '/assets/js/myJSfile.js' ), array( 'jquery' ), null, true );

    wp_localize_script( 'fileid', 'myvar', array(
        'url'    => admin_url( 'admin-ajax.php' ),
        'action' => 'my_action',
        'nonce'  => wp_create_nonce( 'my_nonce' ),
    ) );

} );

function.php中的动作函数:

add_action( 'wp_ajax_my_action_action', 'my_action_action' );
add_action( 'wp_ajax_nopriv_my_action_action', 'my_action_action' );

function my_action() {

    if ( ! check_ajax_referer( 'my_nonce', 'nonce' ) )
        wp_send_json_error();

    $data = array(
        'success' => 1,
        'data' => 'What s wrong?',
    );

    wp_send_json_success( $data );

}

1 个答案:

答案 0 :(得分:0)

试试这个:

add_action( 'wp_ajax_my_action', 'my_action' );
add_action( 'wp_ajax_nopriv_my_action', 'my_action' );

function my_action(){

if ( ! check_ajax_referer( 'my_nonce', 'nonce' ) )
    wp_send_json_error();

$data = array(
    'success' => 1,
    'data' => 'What s wrong?',
);

wp_send_json_success( $data );

exit;
}

请参阅此click here 希望它有效。