Wordpress Ajax响应0

时间:2016-09-06 10:23:54

标签: php jquery ajax wordpress

我试图从wordpress中的ajax请求获得响应。但每次我尝试执行请求时,它都会得到0作为响应。 下面是我在java脚本中的代码

$("#submit").click(function(e) {
 e.preventDefault();
var ajaxurl = '/WordPress/wp-admin/admin-ajax.php';
  alert(dataString);

$.post( ajaxurl, 
    {
        'action': 'my_action',
        'data':   'name'
    }, 
    function(response){
        alert('The server responded: ' + response);
    }
);

});

在function.php

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

function data_insert()
{

    echo "hello";

    die;

}

2 个答案:

答案 0 :(得分:1)

你走了:

<强> JavaScript的:

$(document).ready(function() {
    $("#submit").click(function(e) {
        var demo = 'demo';
        var ajaxurl = '<?php echo admin_url("admin-ajax.php", null); ?>';
        data = { action: "data_insert", demo: demo};     
        $.ajax({
            url: ajaxurl,
            data: data,
            dataType: 'json',
            type: 'post',
            success: function(response) {
              console.log(response);  
            }
        });
    });    
});

<强> PHP:

add_action('wp_ajax_data_insert', 'data_insert');
add_action('wp_ajax_nopriv_data_insert', 'data_insert');
function data_insert() {
    $data = $_POST['demo'];
    echo json_encode($data);
    die();
}

答案 1 :(得分:0)

如果您使用外部js文件以便在WordPress中调用AJAX,则必须本地化您的脚本文件。

假设您的js文件是custom.js

$("#submit").click(function(e) {
 e.preventDefault();
$.post( front_ajax.ajaxurl, 
    {
        'action': 'my_action',
        'data':   'name'
    }, 
    function(response){
        alert('The server responded: ' + response);
    }
);

});

Functions.php文件

function my_enqueing_function() {
    wp_enqueue_script( 'custom-js', get_stylesheet_directory_uri() .'your_path_here/custom.js', array('jquery'), time(), true );
    //Localizing our custom-js script to be called using front_ajax
    wp_localize_script( 'custom-js', 'front_ajax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) );
}

add_action('wp_ajax_my_action','data_insert');
add_action('wp_ajax_nopriv_my_action','data_insert');
function data_insert()
{
    echo "hello";
    wp_die;
}

尝试以上方法。应该工作。