正在尝试将AJAX数据发送到WordPress挂钩

时间:2015-04-07 作者:nivram80

我试图通过AJAX将jQuery数据发送到WordPress模板文件。我尝试了几种不同的技巧和解决方案,这些技巧和解决方案基于与此主题相关的其他问题,但都没有成功。我可以成功地从函数传递数据。php文件到我的促销。php模板文件。

但是,我无法将JavaScript文件(ajaxjavascript.js)中的数据获取到函数中。php文件。加载页面时,my$\\u POST变量为空,my console为空。从我的ajax javascript记录消息。js文件读取\'Server response from the AJAX URL 0\'. 对我来说,响应代码“0”意味着我的wp\\u ajax挂钩有问题,但我不知道是什么问题。钩子有什么问题吗?还是我看得太多了?

以下是我的最新尝试:

ajax-javascript.js

jQuery(document).ready(function($) {
  var numberOfPromos = 4;
  var data = {
    numberOfPromos: numberOfPromos
  };

  $.post(\'/wp-admin/admin-ajax.php\', data, function(response) {
    console.log(\'Server response from the AJAX URL \' + response);
  });
});

functions.php

add_action( \'wp_enqueue_scripts\', \'add_ajax_javascript_file\' );

function add_ajax_javascript_file() {
    wp_localize_script( \'ajax_for_frontend\', \'ajax_for_frontend\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' )));
    wp_enqueue_script( \'ajax_custom_script\', get_stylesheet_directory_uri() . \'/js/ajax-javascript.js\', array(\'jquery\') );
}

add_action( \'wp_ajax_nopriv_get_number_of_promos\', \'get_number_of_promos\' );
add_action( \'wp_ajax_get_number_of_promos\', \'get_number_of_promos\' );

function get_number_of_promos() {
    echo $_POST[\'numberOfPromos\'];  
    die();
}
promotions.php - 在Wordpress模板文件中调用函数的位置

<div><?php echo $get_number_of_promos(); ?></div>

3 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

未测试,但。。。

您需要将“操作”标识符与数据一起传递,如下所示:

var data = {
    \'action\': \'my_action\',
    \'whatever\': 1234
};
在你的情况下,这种行为get_number_of_promos.

示例来自关于AJAX的Codex页面,您应该仔细阅读:https://codex.wordpress.org/AJAX_in_Plugins

SO网友:vajrasar

您不能在WordPress中传递绝对URL。使用ajax_for_frontend.ajaxurl 代替绝对URL。

尝试使用此(未测试)-

jQuery(document).ready(function() {
    var numberOfPromos = 4;

    jQuery.ajax({

        url: ajax_for_frontend.ajaxurl,
        type: \'post\',
        data: {
            action: \'get_number_of_promos\',
        },
        success: function( response ) {
            console.log(\'Server response from the AJAX URL \' + response);
        }

    });
});

SO网友:Grant

此外,调用函数的方式也不正确:

 <div><?php echo $get_number_of_promos(); ?></div>
您正在以字符串($)的形式调用函数(get\\u number\\u of\\u promos)。

它应该是:

 <div><?php echo get_number_of_promos(); ?></div>

结束

相关推荐

Ajax insert or update data

我一直在浏览类似的问题,还没有让这个功能发挥作用。我正在跟踪用户制作嵌入式vimeo视频并插入数据或更新数据的进度。帖子页面上的JS: $.ajax({ type: \'POST\', dataType: \'json\', url: ajaxurl, data: { \'action\': \'vimeo_progress\',