【问题标题】:Wordpress Ajax response 0Wordpress Ajax 响应 0
【发布时间】:2017-01-13 18:33:04
【问题描述】:

我正在尝试从 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;

}

【问题讨论】:

标签: php jquery ajax wordpress


【解决方案1】:

如果您使用外部 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;
}

试试上面的。应该可以。

【讨论】:

    【解决方案2】:

    给你:

    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();
    }
    

    【讨论】:

    • 我照原样复制了这段代码并测试了它仍然是响应 0
    • @WatersSharma,我在我的 WordPress 主题上运行此代码,它就像一个魅力。请检查此示例并运行此示例,然后您将应用您的代码。
    • 我一直在single.php中使用这个有什么影响吗??
    猜你喜欢
    • 2015-05-12
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多