wp_ajax action is not running

时间:2014-04-22 作者:JennisDev

我正在写一个插件。当有人按下我的wordpress插件设置页面中的按钮时,我想运行方法get\\u my\\u选项。进行了ajax调用,但该方法从未运行。

在页面中,我有以下代码:

<div class="wrap">
<input type="button" value="test" onclick="my_js_function();"/>
</div>
<?php
wp_enqueue_script( \'function\', plugins_url( \'/js/synchandler.js\',__FILE__),         array(\'jquery\'));
wp_localize_script( \'function\', \'my_ajax_script\', array( \'ajaxurl\' => admin_url(  \'admin-ajax.php\' ) ) );


function get_my_option()
{
    //do something
    die();
}

add_action("wp_ajax_nopriv_get_my_option", "get_my_option");
add_action("wp_ajax_get_my_option", "get_my_option");
?>
添加的synchandler。js文件:

function my_js_function() 
{
    jQuery.ajax({
    url: my_ajax_script.ajaxurl,
    type: \'POST\',
    data: ({ action: \'get_my_option\', affiliate: \'daisycon\' }),
    success: function (response) {
        console.log("got this: " + response);
        }
    });
}
有一个响应,但这是一个0,因此javascript添加得很好,但仅此而已。通过运行此命令,我的日志中没有错误。页面中添加了AjaxURL(似乎是一个常见错误)。

/* <![CDATA[ */
var my_ajax_script = {"ajaxurl":"http:\\/\\/mywebsite.net\\/wp-admin\\/admin-ajax.php"};
/* ]]> */
触发它的按钮使用onclick="my_js_function(); 在HTML上button-标签

方法虽然简单get_my_option 不会被ajax调用触发。我做错了什么?

2 个回复
最合适的回答,由SO网友:Dave Ross 整理而成

在哪里调用add\\u action()?如果它位于您已经输出HTML的位置,则为时已晚,而且在AJAX请求过程中可能根本看不到它。

您应该在主题函数中包含该代码。php文件,或尽早在插件中。

SO网友:Frederik Spang

您需要将功能代码作为函数放入插件中(这取决于您开发插件的方式)。

我更喜欢添加add_action 调用admin\\u init-使用admin ajax调用它。php也是。

wp_enqueue_script( \'function\', plugins_url( \'/js/synchandler.js\',__FILE__),         array(\'jquery\'));
wp_localize_script( \'function\', \'my_ajax_script\', array( \'ajaxurl\' => admin_url(  \'admin-ajax.php\' ) ) );


function get_my_option()
{
    //do something
    die();
}
function add_ajax_actions() {
    add_action("wp_ajax_nopriv_get_my_option", "get_my_option");
    add_action("wp_ajax_get_my_option", "get_my_option");
}
add_action( \'admin_init\', \'add_ajax_actions\' );
我不知道这是否是最佳实践-这纯粹是个人喜好,避免在加载的每个页面上添加挂钩-仅在管理页面上。

结束

相关推荐

搜索-AJAX-使用分页更改查询参数

Too Long ; Didn\'t Read在使用ajax创建查询时,如何使分页工作?我正在创建一个功能性搜索页面,允许用户过滤每页的帖子数量。我不太明白如何创建它,以便分页功能正确,希望有人能向我解释一下。我知道,通过在PHP ajax操作中创建一个新查询,我可以创建新的分页,并且不会改变正常的WP\\U查询,因此我需要使用ajax创建分页功能,但我不确定如何将其连接到某个ajax自定义查询。function implement_ajax() { $ppp = 10;